乐趣区

关于正则表达式:正则表达式基础工具书篇-关于边界

写在之前:以下所有的元字符,匹配的不是理论的字符,而是一个“虚”的地位。

1. 整体边界
1. 匹配起始地位的 ^

^ 写在字符集中第一个方括号的后边,示意“非”。
^ 写在整个正则表达式的最前边,则示意匹配输出字符串的起始地位,即结尾。简略的说,就是以什么什么为结尾。

比方,咱们想要通过正则表达式匹验证手机号码。

如果咱们应用正则表达式 1[35789]\d{9}去匹配,会把 00015599998888这样的字符串验证通过。因为咱们的确能够在这个字符串中,匹配出合乎这个正则的字符串。

单纯的为了避免在结尾多几位数的谬误手机号通过验证,咱们应该将正则表达式批改为 ^1[35789]\d{9}即只有以 13 15 17 18 19结尾的,且能在其后匹配出 9 个数字的字符串,能够验证通过。

2. 匹配完结地位的 $

$ 写在整个正则表达式的最初边,则示意匹配输出字符串的完结地位,即开端。简略的说,就是以什么什么为结尾。

返回上边的例子,正则表达式,曾经被优化为 ^1[35789]\d{9}

然而仔细的人会发现,1559999888866666这样的字符串还是会验证通过。为了保障手机号只有 11 为,咱们应该将正则表达式批改为 ^1[35789]\d{9}$

即只有以 13 15 17 18 19结尾的,且后边只有 9 个数字就完结的,能够验证通过。

3. \b\B

\b用来匹配单词(数字)的边界,比方单词与符号之间、单词与空格之间的地位等。
用谨严一点的说法,就是 \w\W之间的地位(尚未讲究)。

虽说是边界,然而匹配的只是一个虚的地位(能够设想为 \w\W两个字符两头的那个缝隙),而不是理论的字符。

\B则反过来,匹配非单词的边界,即 \w\w之间的地位,或 \W\W之间的地位。
也就是单词(数字)中两个相邻字符两头的那条缝隙,或者两个符号两头的那条缝隙。

同样,匹配的是一个虚的地位。

利用这两个符号,咱们最常做的,就是利用 replace,在字符串中插入字符。
举一个最经典的例子,数字的三位分节法:

//js
"1234567890".replace(/\B(?=(?:\d{3})+$)/g,",")
//"1,234,567,890"

(?=(?:\d{3})+$)是一个正向预查,示意 咱们要匹配的 \B,的后边的数字必须是三个一组三个一组(有起码一组)来结尾的。
满足这样条件的,数字之间的缝隙(非单词边界),全副(正则后有全局修饰符g)替换(插入)为一个逗号。

退出移动版