js中正则表达式 量词的使用
量词
column1 | column2 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 例如,/a+/ 匹配 “candy” 中的 “a”,“caaaaaaandy” 中所有的 “a”。 |
n* | 匹配任何包含零个或多个 n 的字符串。 例如,/bo*/ 匹配 “A ghost booooed” 中的 “boooo”,“A bird warbled” 中的 “b”,但是不匹配 “A goat grunted”。 |
n? | 匹配任何包含零个或一个 n 的字符串。 例如,/e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。 |
n | 匹配包含 X 个 n 的序列的字符串。 例如,/a{2}/ 不匹配 “candy,” 中的 “a”,但是匹配 “caandy,” 中的两个 “a”,且匹配 “caaandy.” 中的前两个 “a”。 |
n | X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。 例如,/a{2,}/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy” 和 “caaaaaaandy.” 中所有的 “a”。 |
n | X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。 例如,/a{1,3}/ 不匹配 “cndy”,匹配 “candy,” 中的 “a”,“caandy,” 中的两个 “a”,匹配 “caaaaaaandy” 中的前面三个 “a”。注意,当匹配 “caaaaaaandy” 时,即使原始字符串拥有更多的 “a”,匹配项也是 “aaa”。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。 |
?=n | 匹配任何其后紧接指定字符串 n 的字符串。 |
?!n | 匹配任何其后没有紧接指定字符串 n 的字符串。 |
1、贪婪模式
‘+ * ?’ 三个量词符,默认情况下都是最大可能匹配,即匹配直到下一个字符不满足匹配规则为止。这被称为贪婪模式。
var s = 'aaa'; s.match(/a+/);
console.log(s);
控制台:
上面代码中,模式是/a+/,表示匹配1个a或多个a,那么到底会匹配几个a呢?
因为默认是贪婪模式,会一直匹配到字符a不出现为止,所以匹配结果是3个a。
如果想将贪婪模式改为非贪婪模式,可以在量词符后面加一个问号。
var s1 = 'aaa';
var b = s1.match(/a+?/);
console.log(b);
控制台:
上面代码中,模式结尾添加了一个问号/a+?/,这时就改为非贪婪模式,一旦条件满足,就不再往下匹配。
2、^n 匹配任何开头为 n 的字符串。
var str = '123abc154abc';
var reg = /^123/;
var res = reg.test(str);
console.log(res);
控制台:
要求字符串开头必须是数字
var reg1 = /^\d/;
var res1 = reg1.test(str);
console.log(res1);
控制台:
3、n$ 匹配任何结尾为 n 的字符串。
var reg = /abc$/;
var res = reg.test(str)
; console.log(res);
控制台:
4、/^***$/要求字符串必须完全匹配
var str = 'abcbabc';
var reg = /^abcbabc$/;
var res = reg.test(str);
console.log(res);
控制台:
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果