在香草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。
我如何使用正则表达式进行检查?为什么我想到的那个不能按我预期的那样工作?
谢谢!
答案 0 :(得分:3)
^\d+|#\d+
的意思是
#
,后跟字符串中任意位置的 一个或多个数字。换句话说,^
是第一种选择的一部分,不适用于第二种选择。
满足您要求的模式将是:
^\d+(#\d+)+$
#
和一个或多个数字组成的序列,直到字符串的结尾