正则表达式笔记
\r,\n 回车和换行
\x 16进制数表示
\t 制表符
\d 任意一个数字,0~9中的任意一个
\w 任意一个字母或数字或下划线,也就是A~Z,a~z,0~9,_中的任意一个(\W代表非特殊符号)
\s 包括空格、制表符、换页符等空白字符的其中任意一个
. 除换行符(\n)以外的任意一个字符
[^abc] 匹配除"a""b""c"以外的任意一个字符
[a-c] 匹配a~c中的任意一个字符
"次数修饰符"放在"被修饰的表达式"后边
{n} 表达式重复n次
{m,n} 表达式至少重复m次,最多重复n次
{m,} 表达式至少重复m次
? 匹配表达式0次或1次,相当于{0,1}
+ 表达式至少出现1次,相当于{1,}
* 表达式不出现或出现任意次,相当于{0,}
^ 与字符串开始的地方相匹配,不匹配任何字符 "^aaa"
$ 与字符串结束的地方相匹配,不匹配任何字符 "aaa$"
\b 匹配一个单词边界,也就是单词开始和结束的空白位置,不匹配字符
eg:表达式".\b" 匹配"@@@abc" 匹配成功 匹配结果是:"@"和"c"
| 左右两边表达式之间"或"关系,匹配左边或右边
() 将括号中的部分作为整体,如果之前有括号,可以用\1引用,依次类推
g g表示全局模式
i i表示忽略大小写
gi 表示将匹配的所有字符串将忽略大小写
\s,\d,\w,\b对应的大写字母表示相反的意义
贪婪模式:尽可能地多匹配,如+,*
非贪婪模式:尽可能地少匹配,如{m,n}以及修饰匹配次数的特殊符号后再加一个"?";
举例1:表达式 "<td>(.*)</td>" 与字符串 "<td><p>aa</p></td> <td><p>bb</p></td>" 匹配时,匹配的结果是:成功;匹配到的内容是 "<td><p>aa</p></td> <td><p>bb</p></td>" 整个字符串, 表达式中的 "</td>" 将与字符串中最后一个 "</td>" 匹配。
举例2:相比之下,表达式 "<td>(.*?)</td>" 匹配举例1中同样的字符串时,将只得到 "<td><p>aa</p></td>", 再次匹配下一个时,可以得到第二个 "<td><p>bb</p></td>"。
(\w){4} 代表重复4个任意字符,字符可以不同
(\w)\1{4} 代表重复4个相同字符
正向预搜索:"(?=xxxxx)","(?!xxxxx)" 在"缝隙"右侧 不匹配任何字符
反向预搜索:"(?<=xxxxx)","(?<!xxxxx)" 在"缝隙"左侧 不匹配任何字符
reg.test(str) 检测字符串是否存在,返回bool
str.match(reg) 将字符串提取出来,返回数组
str.replace(reg,string) 将字符串中的某字符串替换,返回替换后的字符串
reg.exec(str) 通过正则表达式对字符串进行提取,知道检测到符合的停止,若要全部取出来则需遍历字符串
2-4位中文正则表达式:
<script language="JavaScript"> function vaildate(f){ var regex = /^[\u4e00-\u9fa5]{2,4}$/; // 定义正则 if(!(regex.test(f.name.value))){ // name为要判断的输入 alert("name为2到4个汉字!"); f.name.focus(); return false; } return true; } </script>