希望是一个简单的!
我一直在尝试使它工作几个小时,但是却没有运气,因为我对regexp相当陌生,我在这里可能会遗漏一些非常明显的东西,并希望有人可以指出正确的方向。我要匹配的模式如下:-
至少1个或多个数字+“ ##” +至少1个或多个数字+“ ##” +至少1个或多个数字
因此,一些有效组合的示例为:-
1 ## 2 ## 3
123#123#123
0 ## 0 ## 0
一些无效的组合是
a ## b ## c
1 ## ## 1
我有以下正则表达式,如下所示:-
[\d+]/#/#[\d+]/#/#[\d+]
并像这样使用它(请注意在字符串中使用双斜杠):-
var patt = new RegExp("[\\d+]/#/#[\\d+]/#/#[\\d+]");
if(newFieldValue!=patt){newFieldValue=="no match"}
我也尝试了这些,但仍然没有:-
if(!patt.text(newFieldValue)){newFieldValue==""}
if(patt.text(newFieldValue)){}else{newFieldValue==""}
但是我没有尝试匹配的东西,我在哪里错了?
万分感激,欢呼!
最佳答案
1)对于您的情况,我看不出有任何理由在RegExp文字上使用RegExp
构造函数。 (前者主要用于动态需要模式的地方,即由变量促成的模式。)
2)如果其中只有一种类型的字符,则不需要字符类(因此\d+
不是[\d+]
3)您实际上并没有根据输入检查模式。您不能通过创建RegEx实例并使用==
来应用RegEx;您需要使用test()
或match()
来查看是否进行了匹配(前者仅用于检查而不是捕获)
4)您要分配的==
(=
)
if (!/\d+##\d+##\d+/.test(newFieldValue)) newFieldValue = "no match";