正则表达式笔记

, 回车和换行

x             16进制数表示

               制表符

d              任意一个数字,0~9中的任意一个

w             任意一个字母或数字或下划线,也就是A~Z,a~z,0~9,_中的任意一个(W代表非特殊符号)

s               包括空格、制表符、换页符等空白字符的其中任意一个

.                 除换行符( )以外的任意一个字符

[^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$"

              匹配一个单词边界,也就是单词开始和结束的空白位置,不匹配字符

                  eg:表达式"." 匹配"@@@abc" 匹配成功 匹配结果是:"@"和"c"

|                左右两边表达式之间"或"关系,匹配左边或右边

()                将括号中的部分作为整体,如果之前有括号,可以用1引用,依次类推

g                g表示全局模式

i                 i表示忽略大小写

gi               表示将匹配的所有字符串将忽略大小写

s,d,w,对应的大写字母表示相反的意义

贪婪模式:尽可能地多匹配,如+,*

非贪婪模式:尽可能地少匹配,如{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>
原文地址:https://www.cnblogs.com/skyblue123/p/10187957.html