JavaScript 正则表达式 笔记

 

特殊字符转义(小写!)

 

\w word 字母数字下划线[a-zA-Z0-9_]

\s space 任何Unicode空白符 [\n\r\f\t\v]

\d decimal [0-9]

\b bound 单词边界 (/^JavaScript\b/ 与 “JavaScript is...”匹配,不与“JavaScript:alert('');”匹配)

 

重复

 

{n}

{m, n}

{m,} 重复次数大于m

 

分组与引用

 

通过括号对正则表达式进行分组。

分组两个作用:一是重复,而是引用。

\ $

 

匹配位置

 

(?=  ) 预查 指定匹配字符串接下来应该出现的匹配串

如:/JavaScript(?=hello)/ 匹配 “JavaScripthelloworld”中的JavaScript串

 

(?!  ) 预查非

 

(?:  ) 匹配但不获取

 

标志

 

m 多行模式匹配 不加则只匹配单行结果 ^行首 $行尾

 

其他

 

\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。

 

\num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。

 

\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

 

\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。

 

\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。

 

\un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。

 

匹配中文字符的正则表达式: [u4e00-u9fa5]

 

匹配双字节字符(包括汉字在内):[^x00-xff]

 

? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串

 

(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。

 

怎样查看自己的正则表达式是否写对(检查转义字符是否写对),可以查看正则表达式对象的.source属性。

 

示例代码

 

ContractedBlock.gif ExpandedBlockStart.gif Code
<script language="javascript">
var strSrc = "xxa1b01c001yya2b02c002zz";
var re = /a(\d)b(\d{2})c(\d{3})/gi;
var arr, count = 0;
while ((arr = re.exec(strSrc)) != null) {
    displayResult();
}
function displayResult() {
    document.write(
"<p>这是用正则表达式/" + re.source + "/gi对字符串<br>\"" + RegExp.input + "\"进行第" + (++count) + "次搜索的结果:<br>");
    document.write(
"RegExp.index为" + RegExp.index + "<br>");
    document.write(
"RegExp.lastIndex为" + RegExp.lastIndex + "<br>");
    document.write(
"RegExp.lastMatch为" + RegExp.lastMatch + "<br>");
    document.write(
"RegExp.lastParen为" + RegExp.lastParen + "<br>");
    document.write(
"RegExp.leftContext为" + RegExp.leftContext + "<br>");
    document.write(
"RegExp.rightContext为" + RegExp.rightContext + "<br>");
    document.write(
"RegExp.$1为" + RegExp.$1 + "<br>");
    document.write(
"RegExp.$2为" + RegExp.$2 + "<br>");
    document.write(
"RegExp.$3为" + RegExp.$3 + "<br>");
    document.write(
"RegExp.$4为" + RegExp.$4 + "<br>");
    document.write(
"arr.index为" + arr.index + "<br>");
    document.write(
"arr.input为" + arr.input + "<br>");
    document.write(
"arr.lastIndex为" + arr.lastIndex + "<br>");
    document.write(
"返回数组的元素个数为" + arr.length + "<br>");
    document.write(
"返回数组的内容为[");
    
for(var i=0; i<arr.length; i++){
        
if(i<arr.length-1)
            document.write(
"\"" + arr[i] + "\",");
        
else
            document.write(
"\"" + arr[i] + "\"]</p>");
    }
}
</script>

转载于:https://www.cnblogs.com/zhengchuyu/archive/2008/08/13/1267056.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值