正则表达式,为什么表达式在JavaScript中无效但在RegExr网站上有效

时间:2018-07-11 12:50:31

标签: javascript regex

我通过RegExr.com(https://regexr.com/3s9ae)创建了一个正则表达式 与将正则表达式添加到网站上的JavaScript代码中相比,为什么它的行为略有不同?我希望它测试值'test.test.te $ t:123'并返回假/无效,因为它包含美元符号。

无论出于何种原因,它在我的JS代码中返回true,但是RegExr.com准确地表明它是错误的。

更重要的是,如何使我的正则表达式起作用? :)我只希望允许使用字母和/或数字,并且在使用句号后必须包含字母和/或数字,并且始终以冒号加1至99999的数字结尾 匹配示例:

  1. 测试:123
  2. test.test:1234
  3. test.test.test:1234

不应匹配的示例:

  1. 测试:123
  2. 测试:
  3. :1234 4:test.test $:123
  4. test:abc

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}$/;

0 个答案:

没有答案