正则表达式 - 如何匹配和替换为JavaScript

时间:2014-11-19 19:07:33

标签: javascript regex

我试图根据这些规则匹配符号序列:

  1. 它位于字符串的开头
  2. 不区分大小写
  3. 以字母VN
  4. 开头
  5. 可选空格如下
  6. -个字符(仅限其中一个)
  7. 可选空格如下
  8. 以下是它应该匹配的示例字符串以及我尝试使用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);
    

    但它似乎无法奏效。有人可以帮助我,并解释它是如何使用的,我做错了什么?感谢

3 个答案:

答案 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],表示单个字符的所有可能匹配。