我试图创建一个从包含标点符号的正则表达式中提取的元素数组,但我得到的只是一个值。
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}]*/;
答案 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)
您的错误:
^
)。当然,你只能得到一个匹配:一行的开头。 []
)是某种形式的分组。他们不是。g
)i
)更好的
var regex = /'[0-9]{8}\s[a-z]*'<[a-z ]*>,/ig;
无论如何:可能是您过度具体。怎么样:
var regex = /'[^']*'<[^>]*>,/g;
过度具体的正则表达式难以调试和维护,同时没有提供任何实际好处。 (但要注意不够具体的表达方式。找到合适的平衡点。)