发新贴  快速回复

//关于\b : 独立的部分   ( 起始,结束,空格 );我使用使用首字中文取测试如“啊123456”也可以测试通过?

Shark
2017-12-23 14:46

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

<script>

window.err= = function(){

var aInput = document.getElementsByTagName('input');

 

var re = /\b[1-9]\d{4,11}\b/;//此处更改为\b,然后使用首字中文取测试如“啊123456”也是alert('是QQ号');与之前的\b : 独立的部分   ( 起始,结束,空格 )不符合啊?怎么解释呢?

 

aInput[1].err= = function(){

 

if( re.test(aInput[0].value) ){

alert('是QQ号');

}

else{

alert('不是QQ号');

}

 

};

 

};

 

</script>

</head>

 

<body>

<input type="text" /><input type="button" value="确定" />

</body>

</html>

 

本帖内容针对以下视频发布:

11-正则中的量词和首尾匹配
 
2017年2月8日

JavaScript当中正则表达式的\b表示的是单词边界。
注意:学习编程不要太在意名字,看懂意思才是王道,例如什么叫单词边界。能知道更好,不知道也没关系,因为这些都是国人翻译的,外国人叫不叫这个还真不好说。但是只要我们理解了意思,自己心中知道”单词边界“是什么就可以。再比如,为什么正则表达式叫"正则表达式"。


下面几个例子看完你一定明白\b的用法


var str='thisis';
console.log(/\bthis/.test(str)) //true

var str='啊thisis';
console.log(/\bthis/.test(str)) //true

var str=' thisis';
console.log(/\bthis/.test(str)) //true

var str='.thisis';
console.log(/\bthis/.test(str)) //true

var str='-thisis';
console.log(/\bthis/.test(str)) //true

...

关键点来了:
var str='wthisis';
console.log(/\bthis/.test(str)) //false

var str='3thisis';
console.log(/\bthis/.test(str)) //false

var str='_thisis';
console.log(/\bthis/.test(str)) //false

只有三面三种情况才会返回false,也就是t的前面不能是\w(字母、数字、下划线),如果是就会匹配不成功。


所以你上面那个qq号的正则 /\b[1-9]\d{4,11}\b/ 数字的前面写了个\b,那表示,数字的前面只要不是\w,就能匹配成功,你上面的字符串数字的前面是一个汉字"啊",不是\w,那当然匹配成功了。


 

2017-12-23 19:27  回复本帖
Shark

2017年2月8日 2017-12-23 19:27发表的内容:

JavaScript当中正则表达式的\b表示的是单词边界。
注意:学习编程不要太在意名字,看懂意思才是王道,例如什么叫单词边界。能知道更好,不知道也没关系,因为这些都是国人翻译的,外国人叫不叫这个还真不好说。但是只要我们理解了意思,自己心中知道”单词边界“是什么就可以。再比如,为什么正则表达式叫"正则表达式"。


下面几个例子看完你一定明白\b的用法


var str='thisis';
console.log(/\bthis/.test(str)) //true

var str='啊thisis';
console.log(/\bthis/.test(str)) //true

var str=' thisis';
console.log(/\bthis/.test(str)) //true

var str='.thisis';
console.log(/\bthis/.test(str)) //true

var str='-thisis';
console.log(/\bthis/.test(str)) //true

...

关键点来了:
var str='wthisis';
console.log(/\bthis/.test(str)) //false

var str='3thisis';
console.log(/\bthis/.test(str)) //false

var str='_thisis';
console.log(/\bthis/.test(str)) //false

只有三面三种情况才会返回false,也就是t的前面不能是\w(字母、数字、下划线),如果是就会匹配不成功。


所以你上面那个qq号的正则 /\b[1-9]\d{4,11}\b/ 数字的前面写了个\b,那表示,数字的前面只要不是\w,就能匹配成功,你上面的字符串数字的前面是一个汉字"啊",不是\w,那当然匹配成功了。


 

感谢大神精彩的回答,那是视屏中没说清楚的问题,视屏中只说了 ——关于\b : 独立的部分 ( 起始,结束,空格 );
2017-12-23 22:05  回复本帖
登录 后才可以发表回复