我试图根据这些规则匹配符号序列:
V
或N
-
或–
个字符(仅限其中一个)以下是它应该匹配的示例字符串以及我尝试使用google结果制作的表达式:):
var str = "V - ";
/*var str = "N - ";
var str = "V- ";
var str = "N -";
var str = "N –";
var str = "V– ";*/
str.replace(/^(V|N)\s(-|–)\s/i, 'replaced');
alert(str);
但它似乎无法奏效。有人可以帮助我,并解释它是如何使用的,我做错了什么?感谢
答案 0 :(得分:2)
试试这个
(V|H|v|h)\s*(-|–)\s*
\ s *为您提供空白
选项如果你想找到多次使用/ g
答案 1 :(得分:1)
str.replace
函数实际上并没有修改str
,但它返回了它的修改后的副本,所以你想要的是
var str = "V - ";
/*var str = "N - ";
var str = "V- ";
var str = "N -";
var str = "N –";
var str = "V– ";*/
var str2 = str.replace(/^(V|N)\s?(-|–)\s/i, 'replaced');
alert(str2);
另外,请注意'?'我添加到你的表达式,使空格可选(使用*代替0或更多空格)
答案 2 :(得分:1)
正则表达式可以简化:
alert(str.replace(/ ^ [VN] \ s * [ - ] \ s * / i,'替换'));
你有像(V|N)
这样的表达式,但是当它是单个字符时,交替组是不必要的。它相当于[VN]
,表示单个字符的所有可能匹配。