x(?=y)、x(?!y)、x*?、x+?

梁马鲁
2023-12-01
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
</body>
<script type="text/javascript">
    /*
   正则表达式中特殊字符的含义(数量词(Quantifiers)):
        x(?=y) :只有当 x 后面紧跟着 y 时,才匹配 x。(x后面是y)
        x(?!y) :只有当 x 后面不是紧跟着 y 时,才匹配 x。(x后面没有y)
     */
    //运用:你现在想在aaaabab选择b前面的a
    const re = /\w(?=b)/g;
    const text = 'aaaabab';
    console.log(text.match(re));//["a", "a"]
    //突然你又想在aaaabab选择不是b前面的a
    const re2 = /\w(?!b)/g;
    const text2 = 'aaaabab';
    console.log(text2.match(re2));//["a", "a", "a", "b", "b"]

    /*
  正则表达式中特殊字符的含义(数量词(Quantifiers)):
      x*?、x+?	: * 和 + 一样匹配前面的模式 x,然而匹配是最小可能匹配。
    */
    //贪婪匹配
    const re3 = /x+/g;
    const text3 = 'xxxx';
    console.log(text3.match(re3));//["xxxx"]

    //非贪婪匹配
    const re4 = /x+?/g;
    const text4 = 'xxxx';
    console.log(text4.match(re4));//["x", "x", "x", "x"]
    const re5 = /x{1,4}?/g;//能一个绝对不会四个
    const text5 = 'xxxx';
    console.log(text5.match(re5));//["x", "x", "x", "x"]

    /*
    (难度较大)将100000000变成科学计数法,100.000.000
     */
    let text6 = '100000000';
    const re6 = /(?=(\B)(\d{3})+$)/g;
    console.log(text6.replace(re6, '.'));

</script>
</html>

 

 类似资料: