📜  JavaScript |正则表达式 {X,} 量词(1)

📅  最后修改于: 2023-12-03 14:42:29.399000             🧑  作者: Mango

JavaScript | 正则表达式 {X,} 量词

正则表达式中,量词用于指定某个模式重复出现的次数,包括 {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-XXXXXXX-XXXXX... 的电话号码。\d 表示匹配任意数字字符。

匹配HTML标签
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 表示反向引用第一个捕获组(即标签名),确保闭合标签和开头标签匹配。