希望是一个简单的!

我一直在尝试使它工作几个小时,但是却没有运气,因为我对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";

09-10 11:23
查看更多