JavaScript正则学习

用/表示正则的开始与结束 ,如/abc/

--- 查找到第一个匹配后停止,若想全局匹配,添加g修饰 ,如/abc/g   可以匹配”abcdefabc

--- 区分大小写,若想不区分大小写,添加i修饰,如/abc/i  可以匹配  “ABc”

--- 还有个修饰符m,进行多行匹配,影响^和$

/abc/匹配”it is a string abcdefg”中的”abc”,但不匹配”ab cdefg”里的”ab c”

* 先前项0次或多次出现,/ab*c/里的b字符 0次或多次出现,所以匹配"cbbabbbbcdebc”或”shhfacdb”

注意,这里先前项,如果是\w或\d。则/N\d*/可以”N” 或”N1” 或”N333” ,注意也可以”N123456”。匹配的数字不是要全相同。这里谨记。后面的+同理

与字符结合可以转义或特殊含义。如\*仅表示字符*了,所以/ab\*c/匹配字符串”yttdsab*cyyss”里的(黄色标出,下同),但\d表示数字了,后面会再说

^匹配输入的开始,如/^A/匹配”AbcFA“,但匹配”aAdd”…/^\d+/ 可以匹配”123”或”123abc”等。除此,^也用在[]里表示取反,如[^abcd]表示既不是a,也不是b,也不是c,也不是d的字符

$表示输入的结束,如/A$/匹配/ahdAhheA/,但不匹配”AjjjADhj”,如/\d+$/可以匹配”234”或”acd234”等…..所以综合/^\d+$/匹配的只能完全是数字的输入,如”26643”

*是0次或多次,那么最少1次则用+号。/a+b/可以”abcd”或”aaabbca”,但不可以”bcdac”

?则是0次或1次。/a?b/可以对应”ab”或”b” ,因此可以匹配”abcd”或”cbddd”

.小数点可以匹配除换行符意外的任何单字符。/.t/ 可以”at time” “it is!”

x|y x或y 。 /red|green/  可以匹配”red apple”或”green apple”

{n} 匹配n次  /a{3}/ 可以匹配”taaaaat” ,不可以”ttaatt”

{n,m}最少n次,最多m次。m可省略,表示无数次。匹配越多越好,如。/a{2,4}/ 匹配”caaatty“ 或”caaaaaaaay”

[xyz]其中的任意一个字符,可用-表示范围,如a-d表示a b c d。.或*等在里面普通字符,无其他意义。/[a-d*]/可以匹配”it an apple“ 或 “int *p” 。/[^a-d*]/可以匹配”accurate”    “***start***”    /[\d]+/ 可匹配 “tr655096fr”

\b指边界位置,本身不代表字符。它不是空格。/\bs/可以”start” “now start”   /\w\b\w/匹配nothing

\B非边界位置        /\B../可以匹配”atstts” 。其中,因为at前面是边界,所以没匹配

\d   匹配一个数字字符,等价[0-9]

\D 匹配一个非数字字符,等价[^0-9]

\n 0x0A      \r   0x0D   \f 换页字符  \t TAB    \0 NULL字符

\s空白字符,包括空格 回车 缩进等 /\st/匹配 ”na ts“  /\s\w*/ 匹配”it’s beautiful”  。空格都匹配了,若不想空格,可用\b

\S 除空白字符外的字符

\w 包括字母数字下划线,等价[A-Za-z0-9_]

\W ,等价[^A-Za-z0-9_]

() 子表达式,/(why)+/ 可匹配”tt whywhywhyiuu” 。它还可以记住匹配。常和\n一起使用 n是正整数。 /(ts)(4) R\1\2/ 对应”ts4 Rts4”

(?:x)  不记住匹配,若想匹配abc字符串2到4次,/abc{2,4}/不行,因为{}只针对字符c 。/(?:abc){2,4}/则针对整个abc

x(?=y) 只当x后面是y时匹配x 。/it(?= is)/  匹配”it says it is a dog”….. /it(?=’s| is)/g 匹配”it says it’s pet and it is not”

x(?!y) 只当x后面不是y时匹配x。 /it(?! says)/ 匹配”it says it is a dog”

\xhh  16进制数,如\xff    \uhhhh,如\xffce