tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js正则表达式相关的知识,希望对你有一定的参考价值。
正则表达式
是一种规则,让计算机能读懂人类的规则。
它操作的都是字符串,不操作其他数据类型。
正则的操作方法也属于字符串操作方法的范围内。
js中大部分判断可以用正则,但实现项目并不会这样做。
所以一般是用来判断注册时的手机号、邮箱等。
如何定义正则
方法1
方法2
常用的正则操作方法
test 正则去匹配字符串,成功返回真,不成功返回假。所以一般用来判断。
并且,只要匹配到字符串就返回真,后面的不再去看。
语法: 正则.test(字符串);
例:
var str= ‘abcde‘ ;
var re=/b/;
console.log(re.test(str))
re=/g/;
console.log(re.test(str))
re=/B/;
console.log(re.test(str))
re=/B/i;
ocnsole.log(re.test(str))
|
在正则中的一些符号意义:
| 表示“或”
\w 字符
\W 非字符
\d 数字
\D 非数字
\s 空格
\S 非空格
\b 独立
\B 非独立
字符
字母,数字,下区线
独立部分
以它作为开始位置,或才结束位置,或者用空格隔开的。
要么是头,要么是尾,要么是空格格开的。
例:
var str= ‘122‘ ;
var re=/\b1/;
console.log(re.test(str))
var str= ‘221‘ ;
var re=/1\b/;
console.log(re.test(str))
var str= ‘21 2‘ ;
var re=/1\b/;
console.log(re.test(str))
var str= ‘2 12‘ ;
var re=/\b1/;
console.log(re.test(str))
|
search
用来搜索相应字符串,返回第一个找到位置,未找到返回-1。
不支持全局查找。
语法: str.search(re)
var str= ‘abcde‘ ;
var re=/e/i;
console.log(str.search(re));
|
match 把匹配成功的项保存到数组
把匹配到的位置保存到数组中。
语法: 字符串.match(正则)
如果需要查找所有,需要用 /g (全局查找)
var str= ‘agh123gh456dp789ghdphg‘ ;
var re=/\d/;
console.log(str.match(re))
re=/\d+/;
console.log(str.match(re))
re=/\d+/g;
console.log(str.match(re))
|
replace 查找替换
语法: 字符串.replace(正则,newstr)
var str= ‘aaca‘ ;
var re=/a+/g;
var newStr=str.replace(re, ‘b‘ )
console.log(newStr)
re=/a/g;
newStr=str.replace(re, ‘b‘ )
console.log(newStr)
|
例,脏话替换
把: 这是一句脏话,这真的是一句脏话
换:*是一句*,*真的是一句*
var str= ‘这是一句脏话,这真的是一句脏话‘ ;
var re=/这|脏话/g;
console.log(str.replace(re, ‘*‘ ));
|
replace 的第二个参数不只是可以使用字符串,还可以是您匿名函数。
匿名函数可以最多有99个形式参数所替换。
$1-$99 与正则中第1个到第99个子表达式相匹配的文本。
$0 表示当前查找到的项。
可以是 $0-$99 ,表示
var str= ‘这是一句脏话,这真的是一句脏话‘ ;
var re=/这|脏话/g;
console.log(str.replace(re, function ($0){
var sl= ‘‘ ;
for ( var i=0;i<$0.length;i++){
sl+= ‘*‘
}
return sl
}));
|
例,回顾一下,字符串的排序。
var str= ‘badecgf‘ ;
console.log(str.split( ‘‘ ).sort().join( ‘‘ ))
|
括号 ()
把单独的项目组成子表达式,以便可以便处理一个独立的单元那样用*、+、?来处理那些项目。
如 /(ab|cd)+|ef/
/ab|cd+|ef/
\1 表示重复出现的子项。
量词 {}
表示出现的次数。
*、+、m 也是量词,只是因为用得多而使用的简单表示。
{0,} * 0次以上。
{1,} + 1次以上。
{0,1} ? 0次或1次。
{n,m} 最少出来n次,最多出现m次。
{n} 正好出现n次。
{n,} 至少出现n次。
字符类,不确定 []
任意字符。
[abc] abc中任意一个出现都可以。
比如: /o[sub]t/ 可以匹配: ost、out、obt。
范围
[a-z] 所有小写字母
[0-9] 所有数字
[a-z0-9] 所有小字字母或数字。注意,不用或号 | ,也不用空格 。
收尾 ^ $
^开始
$结束
注意: 在中括号 [ ] 中, ^ 表示取反。
例,找出最多的那个字符
var str= ‘ansssstrcssfdssssfsdddfrsserbdfssssdsss‘ ;
var newStr=str.split( ‘‘ ).sort().join( ‘‘ )
console.log(newStr)
var re=/(\w)(\1)+/g;
var index=0;
var val= ‘‘ ;
var aa=newStr.replace(re, function ($1,$2){
console.log($1);
console.log($2);
if (index<$1.length){
index=$1.length;
val=$2;
}
})
console.log( ‘最多的字符是 ‘ +val+ ‘出现了‘ +index+ ‘次‘ )
|
判断手机号码
判断是不是手机号码
1开头,第二个,3/5/7/8,共11位
/^1[3578]\d{9}/ 不加$
/^1[3578]\d{9}$/ 加$
如果不加$结束号,那只要最后一位匹配正确情况正还要继续匹配,造成 12位、13位以上也是手机号的错误
var txt= ‘13123456789‘ ;
var re=/^1[3578]\d{9}$/;
re.test(txt) ? console.log( ‘是手机‘ ) : console.log( ‘不是手机‘ )
|
判断QQ号
判断QQ号
1到9开头,共5到11位
var str= ‘12345123451‘ ;
var re=/^[1-9]\d{4,10}$/;
console.log(re.test(str))
|
以上是关于js正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
text 正则表达式片段
markdown 正则表达式模式片段
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性
循环通过 python 正则表达式匹配
asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串
js 常用正则表达式表单验证代码