正则表达式匹配首尾字符或者匹配电话号码变*

匹配一行内首尾字符  可以匹配首尾和中间 为 $1,$2,$3

第一种方法

<script type="text/javascript">
    $(function(){
    //比如我们要把首尾变成*
    var str = 's1234567s111SSaa';//定义字符
    ze= /(\S{1})(.*)(\S{1})/;//定义正则,
    strs=str.replace(ze,'*$2*');
    //str=str.replace(ze,'$1***$3') //比如要变中间
    console.log(strs);
    })
</script>

来解释下正则

/(\S{1})(\S.*)(\S{1})/

//为正则的使用

()为定义变量获取内容

\S 大写为匹配非换行字符

\s 小写为匹配换行符

[\s\S] 就是都匹配了

* 表示全部

[\s\S]*就是全部的字符

(.*) 定义一个变量表示所有的字符

{1} 表示获取一位


第二种

上面是比较复杂的方法

实际上正则是可以用数组方式来获取内容

比如我们要获取首尾

str[0] //为首位
str[str.length-1] //为尾巴
//那么我们如果需要中间变成*则可以
str=str[0]+"***"+str[str.length-1]
//如果有多少位就需要多少* 那么我们可以循环位数,因为要去掉首尾,则i的起步为2即可
for (var i=2;i<str.length;i++){
     b+="*";
}
strs=str =str[0]+b+str[str.length-1];


第三种 

匹配首尾还可以用更加简洁的不需要匹配中间变量的方法

var ze1 = /^(.).+(.)$/g;

^ 为匹配开始位置

(.) 开始位置后的第一个字符

$ 为匹配结尾位置


1、/g 表示该表达式将用来在输入字符串中查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个

2、/i 表示匹配的时候不区分大小写,这个跟其它语言的正则用法相同

3、/m 表示多行匹配。什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号

4、/s 与/m相对,单行模式匹配。

5、/e 可执行模式,此为PHP专有参数,例如preg_replace函数。

6、/x 忽略空白模式。


其他一些使用方法

匹配字符内数字

    //var reg = /\d+/g;//匹配数字
    //console.log(str.match(reg))//找出所有的数字

匹配电话号码

var str1 = '13991367972'
var reg = /^(\d{3})\d*(\d{4})$/;
var str2 = str1.replace(reg,'$1****$2')
document.write(str2);


写的好!

微信扫一扫赏大洋