博客列表 >正则的讲解

正则的讲解

有什么是忘不了的的博客
有什么是忘不了的的博客原创
2019年10月13日 21:20:041042浏览

正则是现在,很多语言中都会用的一种匹配方式。

看了还是不太明白的话可以点下面 的连接去对应的手册查看。我这里只介绍一些常用的知识。

php正则     js正则

以在js中使用为例

 '/正则表达式/'  - - -  模糊查询      '/^正则表达式$/' - - - -  精准匹配

\-     固定的一个特殊符号可以用转义符('\')来匹配

\d  可以匹配一个数字

\D 匹配非数字

\w 可以匹配一个字母或数字和下划线

\W可以匹配一个非字母或非数字和非下划线

\b  匹配一个词的边界。具体就是\w和\W之间的位置,也包括\w和^之间的位置,也包括\w和$之间的位置。

\B 匹配一个非单词边界, \b的反面的意思。说来就是\w与\w、\W与\W、^与\W,\W与$之间的位置。

\s(小写)只要出现空白(空格)就匹配
\S(大写)非空白(空格)就匹配

.     可以匹配任意字符,对于码点大于0xFFFF的 Unicode 字符,点字符不能识别如:''。必须加上/s修饰符才能识别。还有中终止符如:\n

*    表示任意个字符(包括0个)

+    表示至少一个字符

?    表示0个或1个字符

x|y 表达式匹配x或者y

{n,m}  表示n-m个字符:

[]  单个字符不限顺序的出现 如:[ace] 匹配ace/cae/eac/等,只要出现这3个字符[ace]中的一种就匹配成功。

[^a]  匹配除去a以外的所有数据。[^]代表不匹配的意思。如:var str='aaaba';   str.match(/[^a]/g) // [b]

{} 匹配多少次,a{5}匹配5个连续的a,a{5,10}匹配5到10之间个连续的a,a{5,}匹配5到,5以后的任意个之间连续的a

() 优先级括住之后就会产生一个子匹配项 在下面的replace()函数中有用到

^      表示行的开头 

^\d 表示必须以数字开头。

$     表示行的结束,

\d$ 表示必须以数字结束。如:^js$只能匹配到 js了。 

? 匹配零次或一次 ,相当于{0,1}

?=n  匹配n之前的位置。 其后紧接指定字符串 n 的字符串。如:var str="Is thisall there is";   var patt1=/is(?=all)/g; //is (匹配的是isall中的is)

?!n    匹配任何其后没有紧接指定字符串 n 的字符串。如:var patt1=/is(?!all)/g; //is (匹配的是is后没有紧接all)

(?<=y)x 匹配'x'仅仅当'x'前面是'y'.这种叫做后行断言。

(?:x) 匹配 'x' 但是不记住匹配项。这种叫作非捕获括号

修饰符

/u  用来正确处理大于\uFFFF的 Unicode 字符。会正确处理四个字节的 UTF-16 编码。/\u{61}/u.test('a') // true 不加/u会把{61}当成匹配61个u.

/i 不区分字符大小写
/g 全局匹配,不会再第一次匹配成功后就停止。
/y 也是全局匹配,不过需要“粘连”。g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。
/s 让.(点)匹配任意单个字符
方法
search()方法返回匹配到的元素下标,不执行全局匹配,它将忽略标志/g,
     如:str.search(/hello/g)
match() 方法的参数可以是字符串或正则表达式。匹配得到的结果存放到一个数组中。
     如:var str="Hello world!" str.match(/o/g)//['o','o'] str.match(/o/)["o", index: 4, input: "Hello world!", groups: undefined]
        在匹配结果中如果只匹配到一个得到相关的详细信息如上,如果匹配到过个只会吧匹配的元素放入数组中。
replace(a,b)方法字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。返回一个新字符串,原字符不变。
     如:name = "Doe, John";name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");可以有多个正则表达式,$1和$2表示第一个和第二个表达式所匹配到的数据
test() 方法用于检测字符串是否与对应的正则表达式相匹配
     如:var str = "longen and yunxi";console.log(/longen/.test(str)); // true  console.log(/longlong/.test(str)); //false
exec() 方法返回匹配到的元素详细信息与match()只匹配一个得到的一样,不执行全局匹配,它将忽略标志/g,可以进行循环匹配得到全部匹配的详细信息。
     如:/wo/.exec(str)


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议