如果自定义模式匹配100%,则Javascript正则表达式将返回true

时间:2019-03-13 21:24:30

标签: javascript regex

在香草Java语言中,我想检查一个字符串。

const myRegex = /^\d+|#\d+/g;
console.log(`${myRegex.test("3#123#432#555")}`); // pattern is ok -> true
console.log(`${myRegex.test("3#123#432##555")}`); // two ## -> patter wrog -> but result is true (would like this to be false)
console.log(`${myRegex.test("3#123#432#55a5")}`); // a character in the string -> pattern wrong -> but result is true (should also be false)

我在https://regex101.com/r/tI1sOa/1/玩耍 我使用此正则表达式获得了完美的匹配,但我希望它在模式更改时返回false。

模式定义应为:number#number#number#number#number(因此,我们首先要有一个数字,然后是#number,这是我想要的次数)

如果模式是数字###或#number或numberLetter#number或任何其他不遵守该模式的组合,则对于测试应返回false。

我如何使用正则表达式进行检查?为什么我想到的那个不能按我预期的那样工作?

谢谢!

1 个答案:

答案 0 :(得分:3)

^\d+|#\d+的意思是

  • 匹配字符串开头的一个或多个数字
  • 匹配#,后跟字符串中任意位置的 一个或多个数字。

换句话说,^是第一种选择的一部分,不适用于第二种选择。

满足您要求的模式将是:

^\d+(#\d+)+$
  • 在字符串的开头匹配一个或多个数字,然后是一个或多个由#和一个或多个数字组成的序列,直到字符串的结尾