我通过RegExr.com(https://regexr.com/3s9ae)创建了一个正则表达式 与将正则表达式添加到网站上的JavaScript代码中相比,为什么它的行为略有不同?我希望它测试值'test.test.te $ t:123'并返回假/无效,因为它包含美元符号。
无论出于何种原因,它在我的JS代码中返回true,但是RegExr.com准确地表明它是错误的。
更重要的是,如何使我的正则表达式起作用? :)我只希望允许使用字母和/或数字,并且在使用句号后必须包含字母和/或数字,并且始终以冒号加1至99999的数字结尾 匹配示例:
不应匹配的示例:
var regex1 = RegExp('^[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*:([1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[1-9]){1}$');
var str1 = 'test.test.te$t:123';
console.log(regex1.test(str1));
// expected output: false (but it comes back true!)
谢谢!
解决方案: 用正斜杠替换正则表达式中的单引号:
var regex1 = /^[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*:([1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[1-9]){1}$/;