JS 正则表达式^$详解
MDN描述
我们知道正则是一种匹配模式,要么匹配字符,要么匹配位置。这里我们得从这两种匹配情况分别解释这两个字符。
从匹配字符角度
当用于匹配字符时,^与$更多是作为匹配出精准结果的辅助条件
1 | '123'.match(/^\d/g);//[1] |
从匹配位置角度
所以当我们在匹配位置时,^$
也成为了我们需要匹配的结果,例如:
1 | '1234'.replace(/^|$/g, '❀');// "❀1234❀" |
当然,在匹配位置时^
与$
也是帮助我们精确位置的辅助条件,比如常用的千位分隔符正则:
1 | '12345678'.replace(/''(?!^)''(?=(\d{3})+$)/g, ',');// "12,345,678" |
1 | '12345678'.match(/(?!^)(?=(\d{3})+$)/g) |
刚学正则的时候,很难理解^$同时存在是怎么匹配的,现在想想其实同时写时只是限制字符的起点与终点
1 | // 栗子 |
注意
^除了作为脱字符表示从头匹配,开头位置两个含义外,还能作为反义字符使用
1 | /[^123]/.test(3) //false |
多行模式
[^]
可以匹配任何字符,包括/n
1 | var s = "Please yes\nmake my day!"; |