正则表达式包括特殊字符

时间:2014-04-08 12:02:45

标签: javascript jquery regex special-characters

我试图创建一个从包含标点符号的正则表达式中提取的元素数组,但我得到的只是一个值。

Thi是字符串示例

'00000002 BLABLA'<MADRID CENTRO>,'00000006 FAFAFAFA'<BARCELONA ORIENTE>,'00000919 HUAWEI'<LA CANDELA>,

我想要一个像这些值一样的数组,包括分隔符:

'00000002 BLABLA'<MADRID CENTRO>,

我错误的正则表达式:

 regex = /^'[0-9]{8}\s[a-zA-Z\'{1}]*[\<{1}a-zA-Z\>{1}]*/;

4 个答案:

答案 0 :(得分:2)

怎么样

var re = /'\d{8} [a-z]+'<[^>]+>,/ig

str.match(re);
/*  [
       "'00000002 BLABLA'<MADRID CENTRO>,",
       "'00000006 FAFAFAFA'<BARCELONA ORIENTE>,",
       "'00000919 HUAWEI'<LA CANDELA>,"
    ] */

答案 1 :(得分:0)

因为您使用的是^

使用它:

''[0-9]{8}\s[a-zA-Z\'{1}]*[\<{1}a-zA-Z\>{1}][^,]+,/g

演示:http://regex101.com/r/nZ7nZ9

检查一下:

var str = "'00000002 BLABLA'<MADRID CENTRO>,'00000006 FAFAFAFA'<BARCELONA ORIENTE>,'00000919 HUAWEI'<LA CANDELA>,";
var res = str.match(/('[0-9]{8}\s[a-zA-Z\'{1}]*[\<{1}a-zA-Z\>{1}][^,]+,)/g);
console.log(res);

O / P:

["'00000002 BLABLA'<MADRID CENTRO>,", "'00000006 FAFAFAFA'<BARCELONA ORIENTE>,", "'00000919 HUAWEI'<LA CANDELA>,"]

答案 2 :(得分:0)

这个正则表达式对我有用:

'[0-9]{8}\s[a-zA-Z\'{1}]*[\<{1}a-zA-Z\s\>,{1}]*

您应该使用此工具来测试正则表达式:http://www.gethifi.com/tools/regex

编辑:像@aelor说的那样,你使用的^只会与行首相匹配。我还添加\ s来捕捉表达式最后部分的空格(比如

答案 3 :(得分:0)

您的错误:

  • 您已使用行首锚(^)。当然,你只能得到一个匹配:一行的开头。
  • 您似乎认为字符类([])是某种形式的分组。他们不是。
  • 尖括号在JS常规练习中没有意义,你不必逃避它们。
  • 您说您想匹配分隔符,但未在表达式中包含它们
  • 您没有使用全局修饰符(g
  • 您可以使用不区分大小写的修饰符(i

更好的

var regex = /'[0-9]{8}\s[a-z]*'<[a-z ]*>,/ig;

无论如何:可能是您过度具体。怎么样:

var regex = /'[^']*'<[^>]*>,/g;

过度具体的正则表达式难以调试和维护,同时没有提供任何实际好处。 (但要注意不够具体的表达方式。找到合适的平衡点。)