📅  最后修改于: 2023-12-03 14:42:29.399000             🧑  作者: Mango
正则表达式中,量词用于指定某个模式重复出现的次数,包括 {n}
、{n,m}
、?
、*
、+
等。其中,{X,}
是一种特殊的量词,表示至少重复X次。下面是一些使用 {X,}
量词的示例。
const regex = /ab{2,}/;
console.log(regex.test("ab")); // false
console.log(regex.test("abb")); // true
console.log(regex.test("abbb")); // true
console.log(regex.test("abbbb")); // true
上面的代码中,/ab{2,}/
表示匹配一个以字母 "a" 开头,后跟至少两个字母 "b" 的字符串。即,重复出现 "b" 的次数必须大于等于 2。
const regex = /go{2,}\s*[a-z]+/g;
const str = "Good programming requires goooooood practice, go go go!";
console.log(str.match(regex)); // ["goooooood practice", "go go go"]
上面的代码中,/go{2,}\s*[a-z]+/
表示匹配一个以字母 "g" 开头,后跟至少两个字母 "o" 的字符串,后面可以有任意数量的空格和小写字母。/g
修饰符用于全局匹配。
const regex = /\d{3}-\d{4,}/;
console.log(regex.test("123-1234")); // false
console.log(regex.test("123-12345")); // true
console.log(regex.test("123-1234567")); // true
上面的代码中,/\d{3}-\d{4,}/
表示匹配一个形如 XXX-XXXX
或 XXX-XXXXX...
的电话号码。\d
表示匹配任意数字字符。
const regex = /<([a-z]+)( [a-z]+="[^"]+")*>.*?<\/\1>/g;
const html = `
<div class="container">
<ul class="list">
<li>Item 1</li>
<li>Item 2</li>
</ul>
</div>
`;
console.log(html.match(regex)); // ["<div class="container"> ... </div>", "<ul class="list"> ... </ul>", "<li>Item 1</li>", "<li>Item 2</li>"]
上面的代码中,/<([a-z]+)( [a-z]+="[^"]+")*>.*?<\/\1>/
表示匹配一个 HTML 标签,包括标签名和属性。[a-z]+
表示匹配任意小写字母组成的字符串,[^"]+
表示匹配任意非双引号字符的字符串。.*?
表示匹配任意字符(包括换行符),但尽可能少地匹配。\1
表示反向引用第一个捕获组(即标签名),确保闭合标签和开头标签匹配。