js内置对象RegExp及RegExp的方法

 

1、RegExp 对象:

/pattern/attributes,表示正则表达式,它是对字符串执行模式匹配的强大工具。

创建方法:

1、new RegExp(pattern, attributes);(不推荐)需要转义。

2、/pattern/attributes对象字面量。效率更高。

参数:

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值:

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

2、方法:

exec():RegExpObject.exec(string)方法用于检索字符串中的正则表达式的匹配。返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

exec() 方法的功能非常强大,它是一个通用的方法,而且使用起来也比 test() 方法以及支持正则表达式的 String 对象的方法更为复杂。

我们可以看得出,在调用非全局的 RegExp 对象的 exec() 方法时,返回的数组与调用方法 String.match() 返回的数组是相同的。(太复杂谨慎用)

test():RegExpObject.test(string)方法用于检测一个字符串是否匹配某个模式。如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。常用。常用来测试字符串是否包含已知的内容。

3、支持正则表达式的 String 对象的方法(这是String的方法):

search():stringObject.search(regexp)方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串

返回值:stringObject 中第一个与 regexp 相匹配的子串的起始位置。注释:如果没有找到任何匹配的子串,则返回 -1。

说明:search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。search() 对大小写敏感.

<script type="text/javascript">

var str="Visit W3School!"
document.write(str.search(/W3School/));//6

</script>

match(): stringObject.match(searchvalue)||stringObject.match(regexp),方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置

返回值: 存放匹配结果的数组该数组的内容依赖于 regexp 是否具有全局标志 g

replace(): stringObject.replace(regexp/substr,replacement),方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

返回值: 一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

<script type="text/javascript">
var str="Visit Microsoft!"
document.write(str.replace(/Microsoft/g, "W3School"));//Visit W3School!

</script>

子表达式替换

name = "Doe, John";
document.write(name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1"));
返回:John Doe

使用匹配函数

name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
    return word.substring(0,1).toUpperCase()+word.substring(1);}
    );
 // \b:匹配单词边界(开头和结尾), \w:匹配任意数字字母下划线,+:匹配1到多次,最终也就是匹配到了aaa||bbb||ccc。这里的函数参数就是匹配的结果,要经过函数处理
document.write (uw);
返回值:Aaa Bbb Ccc

转义字符

function escapeHtml(str){
    return str.replace(/[<>"'&]/g,function(match){
        switch(match){
            case "<" : return "&lt;";
            case ">" : return "&gt;";
            case "&" : return "&amp;";
            case "\"" : return "&quot;";   
            case "\'" : return "&quot;";
         } 
     }); 
} 
escapeHtml('<li class="a3">2&s</li>');

千位分隔符:使用正则与replace()方法

function milliFormat(s){//添加千位符  
    s = s.toString();
    if(/[^0-9\.]/.test(s)) return "invalid value";  
    s=s.replace(/^(\d*)$/,"$1.");  
    s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1");  
    s=s.replace(".",",");  
    var re=/(\d)(\d{3},)/;  
    while(re.test(s)){  
        s=s.replace(re,"$1,$2");  
    }  
    s=s.replace(/,(\d\d)$/,".$1");  
    return s.replace(/^\./,"0.")  
}  

?=  :向前查找,指定了一个必须匹配大不在结果中返回的模式。向前查找实际上就是一个子表达式。需要匹配的文本放在"="后边。匹配到但是最终并没有显示到最终的结果中。

这里的$0表示第一个子式(\d);

这里的$1表示第二个子式(?=(\d));

这个还要再研究研究。上边的还不能匹配负值。

转载于:https://www.cnblogs.com/changyangzhe/p/5728730.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值