JavaScript中正则表达式判断匹配规则以及常用的方法
2024-10-10 06:48:39
JavaScript中正则表达式判断匹配规则以及常用的方法:
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了。
\d
可以匹配一个数字 '00\d'
可以匹配'007'
,'\d\d\d'
可以匹配'010'
\w
可以匹配一个字母或数字 '\w\w'
可以匹配'js'
\s
可以匹配一个空格(也包括Tab等空白符)\DWS
都是表示匹配与小写字母相反的匹配关系\数字n
表示指向第n个分组捕获到的字符串文本的一个引用,能够再次被匹配 /(\d+)(0*)\1/
可以匹配‘22300223’.
可以匹配任意字符 'js.'
可以匹配'jsp'
、'jss'
、'js!'
正则表达式量词:
*
表示任意个字符(包括0个)+
表示至少一个字符?
表示0个或1个字符{n}
表示n个字符{n,m}
表示n-m个字符A|B
可以匹配A或B (J|j)ava(S|s)cript
可以匹配'JavaScript'
、'Javascript'
、'javaScript'
或者'javascript'
^
表示行的开头 ^\d
表示必须以数字开头$
表示行的结束 \d$
表示必须以数字结束[]
表示范围,字符类 [a-zA-Z\_\$][0-9a-zA-Z\_\$]*
可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}
更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)[]
中的^
表示排除某个字符 [^#?]
表示除了?和#的所有字符 ()表示捕获型分组,可以将匹配的字符串进行
分组,提取子串。 如果正则表达式中定义了组,就可以在
RegExp
对象上用exec()
方法提取出子串来。exec()
匹配成功后,返回一个Array
,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。exec()
匹配失败时返回null
。^(\d{3})-(\d{3,8})$
分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:
1
2
3
|
var re = /^(\d{3})-(\d{3,8})$/; re.exec( '010-12345' ); // ['010-12345', '010', '12345'] re.exec( '010 12345' ); // null |
(?:) 分组不想被捕获的时候使用,可以提高程序执行速度,非捕获型分组不会干扰捕获型分组编号。
用正则表达式切分字符串比用固定的字符更灵活
1
|
'a,b;; c d' .split(/[\s\,\;]+/); // ['a', 'b', 'c', 'd'] |
RegExp对象的
test()
方法用于测试给定的字符串是否符合条件。
var re = /^\d{3}\-\d{3,8}$/;
re.test('010-12345'); // true
re.test('010-1234x'); // false
需要特别指出的是,正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。
var re = /^(\d+)(0*)$/;
re.exec('102300'); // ['102300', '102300', '']
由于
\d+
采用贪婪匹配,直接把后面的0
全部匹配了,结果0*
只能匹配空字符串了。加个?
就可以让\d+
采用非贪婪匹配:
var re = /^(\d+?)(0*)$/;
re.exec('102300'); // ['102300', '1023', '00']
特殊标志
g
标志 ,表示全局匹配i
标志,表示忽略大小写m
标志,表示执行多行匹配需要使用转义符' \ '的15个特殊字符
/ \ [ ] ( ) { } ? + * | . ^ $
最新文章
- 运算符.png
- 写了cookie阻止通过输入地址直接访问下一个html,但是直接输入地址访问时,会闪一下下一个页面,怎么回事啊????、
- 原型prototype
- 向列布局动态添加F7
- search支持多种标签
- 关于web开发前端h5框架的选择
- 进入GRUB改root用户密码
- selenium 调用JS操作滚动条(java)来解决element not clickable的问题
- Geodatabase - 修改字段别名(Field Alias)
- Laravel的ORM入门
- Dubbo的配置及使用
- [原创] 绿色单文件封装程序GreenOne V3.0
- win10 UWP读写文件
- [CERC2016]机棚障碍 Hangar Hurdles(kruskal重构树+树上倍增)
- Centos7安装SVN服务器
- 廖雪峰Java4反射与泛型-1反射-4调用构造方法
- Html5——音频标签使用
- Xcode - Xcodeproject详解
- kafka系列 -- 多线程消费者实现
- win7、vs2013编译webkit总结