JavaScript正则表达式核心汇总
RegExp对象是隶属于顶级对象window的属性,全称为“Regular Expression(正则表达式)”。它用于对字符串执行模式匹配。
正则表达式以^开始,以$结束:
"^$"
当正则表达式的外围不使用英文双引号时,必须在正则表达式的前后端添加斜杠:
/^$/
正则表达式可以通过以下两种语法创建:
直接量语法 /pattern/attributes
创建RegExp对象的语法 new RegExp(pattern, attributes);
在JavaScript正则表达式中,RegExp对象支持以下修饰符:
i 执行对大小写不敏感的匹配 g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) m 执行多行匹配
RegExp修饰符是可选的,并且它们不分先后顺序。使用语法为:
/^$/igm; new RegExp(/^$/, igm); new RegExp("^$", igm);
正则表达式常用元字符见下表:
. 查找单个字符,除了换行和行结束符 \w 查找单词字符 \W 查找非单词字符(与\w相反) \d 查找数字 \D 查找非数字字符 \s 查找空白字符(空格) \S 查找非空白字符 \b 查找单词边界 \B 查找非单词边界 \0 查找NUL字符 \n 查找换行符 \f 查找换页符 \r 查找回车符 \t 查找制表符 \v 查找垂直制表符 \xxx 查找以八进制数xxx规定的字符 \xdd 查找以十六进制数dd规定的字符 \uxxxx 查找以十六进制数xxxx规定的Unicode字符
()、[]、{}三者在JavaScript中的作用各不相同。
小括号()内支持[]、{}及任何元字符、普通字符。
在正则表达式中,如果其中某个子正则表达式包含逻辑关系“或”(字符表示为|),那么该逻辑表达式必须位于()内。
示例
aliyun\D|\s 匹配包含“aliyun”及非数字字符,或空白字符的字符串(参见I) aliyun(\D|\s) 匹配包含“aliyun”,及非数字字符或空白字符两者之一的字符串(参见II) (I)aliyun\D|\s表示从aliyun\D或\s中任选其一 (II)aliyun(\D|\s)表示从aliyun\D或aliyun\s中任选其一
中括号[]中不支持任何元字符和逻辑“或”字符|。
字符-可在[]中出现多次。但字符^仅允许在[]中出现一次,并且必须位于首位。
示例
[0-9] 查找从0至9的任何数字 [abcd] 查找是a、b、c或d的字符 [^est] 查找不是e、s或t的字符 [a-z] 查找位于小写字母a至z之间的字符 [A-Z] 查找位于大写字母A至Z之间的字符 [A-N3-9m-z] 查找位于大写字母A至N或数字3至9或小写字母m至z之间的字符 [^2-7c-s] 查找不是位于数字2至7或小写字母c至s之间的字符
大括号{}内不支持任何元字符,它仅用于规定某个子正则表达式的出现次数。部分量词解释如下:
n+ 查找任何包含至少一个n的字符串 n* 查找任何包含零个或多个n的字符串 n? 查找任何包含零个或一个n的字符串 n{X} 查找包含X个n的序列的字符串 n{X,Y} 查找包含X至Y个n的序列的字符串 n{X,} 查找包含至少X个n的序列的字符串 n$ 查找任何结尾为n的字符串 ^n 查找任何开头为n的字符串 ?=n 查找任何其后紧接指定字符串n的字符串 ?!n 查找任何其后没有紧接指定字符串n的字符串
对于由两个和更多普通字符或元字符组合而成的正则表达式,可使用()将它们视为一个整体以使它们共同成为某个量词的作用对象。示例
\d+ 查找至少为一位数字的字符串 (\d\d)? 查找至少为无,至多为两位数字的字符串 (Alibaba\sCloud){1,2} 查找至少出现1次,至多出现2次“Alibaba Cloud”的字符串 (Alibaba\sCloud\r\n){3,} 查找至少出现3次“Alibaba Cloud”且包含回车符和换行符的字符串 Alibaba(?=Group) 查找任何Alibaba其后紧接Gruop的字符串(详见III) Cloud(?!Alibaba) 查找任何Cloud后没有紧接Alibaba的字符串(详见IV) (III)“Alibaba Group Holding Limited”的匹配结果为“Alibaba” (IV)“Alibaba Cloud”的匹配结果为“Cloud”

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
深入学习Lock锁(3)——重入锁ReentrantLock
1.简介 重入锁ReentrantLock,顾名思义,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。除此之外,该锁还支持获取锁时的公平和非公平性选择。 所谓重复加锁,就是某个线程中当调用lock方法对临界区加锁之后,在临界区中再次调用lock方法来进行加锁,如果同步组件不支持重复加锁就会对自己(当前线程)阻塞。而synchronized关键字隐式的支持重进入,比如一个synchronized修饰的递归方法,在方法执行时,执行线程在获取了锁之后仍能连续多次地获得该锁。 关于锁获取的公平性问题,如果在绝对时间上,先对锁进行获取的请求一定先被满足,那么这个锁是公平的,反之,是不公平的。公平的获取锁,也就是等待时间最长的线程最优先获取锁,也可以说锁获取是顺序的。ReentrantLock提供了一个构造函数,能够控制锁是否是公平的。但是也因此导致公平的锁机制往往没有非公平的效率高,但是,并不是任何场景都是以TPS作为唯一的指标,公平锁能够减少“饥饿”发生的概率,等待越久的请求越是能够得到优先满足。 2.实现重进入 1.重进入是指任意线程在获取到锁之后能够再次获取该锁而不...
- 下一篇
Python全栈 Web(JavaScript DOM树、DOM对象、BOM对象)
外部对象: BOM和DOM BOM: Browser Object Module 浏览器对象模型 将浏览器比喻成一个对象-window (网页初始化自动创建) 可以通过window对象操作浏览器 DOM: Document Object Module 文档对象模型 将HTML文档比喻成一个对象-document( 是window的一个属性) 可以灵活的操作网页上的内容 window对象(BOM模型): 表示浏览器 window下的属性和方法在使用时 可以省略window.直接去调用 例如: window.alert() --> alert() window.prompt()-->pormpt() ... window中的对话框: 警告框: window.alert()/alert() 输入框: window.prompt()/prompt() 确认框: window.
相关文章
文章评论
共有0条评论来说两句吧...