希望是一个简单的!
我已经尝试让它工作几个小时了,但运气不好,因为我对正则表达式还很陌生,我可能在这里遗漏了一些非常明显的东西,希望有人能指出我正确的方向.我要匹配的模式如下:-
至少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;您需要使用 test()
或 match()
来查看是否匹配(前者如果您只想检查,而不是捕获)
4) 你有 ==
你要分配的地方 (=
)
if (!/\d+##\d+##\d+/.test(newFieldValue)) newFieldValue = "no match";
关于javascript - 与转义字符匹配的简单正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21698385/