Javascript,正则表达式和{n,m}
Javascript, regular expression and {n,m}
本文关键字:正则表达式 Javascript 更新时间:2023-09-26
我刚刚注意到一个非常奇怪的行为。为什么一个简单的空格会中断所有的测试?
rePattern = /^([a-z]+[-_]?){2,}[a-z]$/;
var test = new Array("jhgfg_hfh-g", "jhg-fg_hfhg", "jhg_fg_hfhg", "jhg_fg_hfhg", "jhg_fghfhg");
for (var i = 0; i < test.length ; i++) {
x = test[i];
alert(i + ' : ' + x + ' : ' + rePattern.test( x ));
}
如果我把上面的改成
// notice {2,} => {2, } with an extra space before }
rePattern = /^([a-z]+[-_]?){2, }[a-z]$/;
那么一切都变成了false
…
感谢u
好的,这里有一个公认的答案:这是因为额外的空间。正则表达式的语法是严格的,你不能添加随机的空白,并期望它会被忽略。{2, }
将匹配文字{2, }
:
/^x{2, }$/.test('x{2, }') === true
当您在测试值的开始或结束处添加空格时,您的regexp不起作用,因为您使用了regexp分隔符^和$
- ^表示模式捕获到字符串 开头
- $表示模式捕获到字符串 的末尾
如果将两个分隔符组合在一起,regexp将对包括空格在内的所有字符作出反应。
所以使用下面的regexp来捕获任何符合模式的字符串:
/([a-z]+[-_]?){2,}[a-z]/
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 将po-box javascript正则表达式转换为c#regex
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 使用正则表达式捕获“”并分割成阵列
- 将这些正则表达式从javascript转换为Java
- 用于验证JS中逻辑运算符表达式的正则表达式