与\ b元字符相同的结果与它没有它

时间:2018-01-29 22:45:56

标签: javascript regex

我正在学习JavaScript中的正则表达式,我面临的问题是我试图理解为什么\ b元字符使用起来如此特殊?我没有看到使用它与使用它没有区别所以使用它和不使用它有什么区别?这就是我的意思。

WITH \ b

<!DOCTYPE html>
<html>
<body>

<p>Click the button to do a global search for "W3" at the beginning or end of a word in a string.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
    var str = "Visit W3Schools"; 
    var patt1 = /\bW3/g;
    var result = str.match(patt1);
    document.getElementById("demo").innerHTML = result;
}
</script>

</body>
</html>

WITH OUT \ b

<!DOCTYPE html>
<html>
<body>

<p>Click the button to do a global search for "W3" at the beginning or end of a word in a string.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
    var str = "Visit W3Schools"; 
    var patt1 = /W3/g;
    var result = str.match(patt1);
    document.getElementById("demo").innerHTML = result;
}
</script>

</body>
</html>

我已经知道通过阅读它的定义意味着什么,但我只是在质疑为什么使用它,如果它在上面的两个代码示例中产生相同的东西?如果任何人可以向我展示2个代码示例来展示他们将如何给出不同的结果,我将非常感激。我甚至在中间移动比赛,但它仍然给了我与使用它相同的结果。

来源

https://www.w3schools.com/jsref/jsref_regexp_begin.asp

2 个答案:

答案 0 :(得分:2)

你的两个例子都没能完成html声称要做的事情。转到https://www.regextester.com/并使用blahW3blahW3blahblahW3作为测试字符串。你的正则表达式应该匹配最后两个,但不是第一个。

您需要: (\bW3|W3\b)

(在单词(\bW3)OR(|)开头匹配W3,在单词结尾处匹配W3(W3\b

答案 1 :(得分:0)

\ b表示&#34;分词&#34;字符(此处列出https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - &gt; http://www.ecma-international.org/ecma-262/5.1/#sec-15.10.2.6

var str = "aaaé";
var patt = /\baaa\b/;    
var result = str.match(patt); /* match it */

但是

var str = "aaab";
var patt = /\baaa\b/;    
var result = str.match(patt); /* doesnt match it */