关于预查的原理非常难懂,总的来说,表达式在解析第一个匹配之前,先用预查表达式去匹配,如果匹配到则继续匹配,否则不再执行匹配。
好吧,正则这个东西,描述起来实在费劲,就当我没说,还是直接用例子说明吧。
一、前瞻/正向肯定预查
<!DOCTYPE html>
<html>
<head>
<title>肯定预查与否定预查</title>
</head>
<body>
<script type="text/javascript">
// 前瞻肯定预查
//找出数组成员中包含teamczyx1的成员
var arr = [
'teamczyx1teamczyx2teamczyx3',
'teamczyx4teamczyx1teamczyx3',
'teamczyx2teamczyx3teamczyx4',
'teamczyx3teamczyx4teamczyx5',
];
var pattern = /^.*(?=teamczyx1).*$/i;
for(var i in arr){
var res = pattern.test(arr); //返回是true false
if(res){
//格式正确
[i] console.log(arr);
}
}
</script>
</body>
</html>
原理不太容易说清楚,记住语法即可,如果是要在很多字符串中间寻找包含某个字符串的字符串就使用以下语法
如果是要找在开头包含指定字符串的字符串,就用下面的语法
如果是要找在结尾包含指定字符串的字符串,就用下面的语法
二、前瞻/正向否预查
<!DOCTYPE html>
<html>
<head>
<title>肯定预查与否定预查</title>
</head>
<body>
<script type="text/javascript">
// 前瞻否定预查
//找出数组成员中不包含teamczyx1的成员
var arr = [
'teamczyx1teamczyx2teamczyx3',
'teamczyx4teamczyx1teamczyx3',
'teamczyx2teamczyx3teamczyx4',
'teamczyx3teamczyx4teamczyx5',
];
var pattern = /^(?!.*?teamczyx1).*$/i;//中间不包含
// var pattern = /^(?!teamczyx1).*$/i;//开头不包含
// var pattern = /^.*?(?!teamczyx1)$/i;//结尾不包含
for(var i in arr){
var res = pattern.test(arr[i]); //返回是true false
if(res){
//格式正确
console.log(arr[i]);
}
}
</script>
</body>
</html>
原理不太容易说清楚,记住语法即可,如果是要在很多字符串中间寻找不包含某个字符串的字符串就使用以下语法
如果是要找在开头不包含指定字符串的字符串,就用下面的语法
如果是要找在结尾不包含指定字符串的字符串,就用下面的语法
|