[英]Regular expression including special characters
我正在尝试创建一个从正则表达式中提取的元素数组,其中包含标点符号,但我只得到一个值。
这是字符串示例
'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}]*/;
怎么样
var re = /'\d{8} [a-z]+'<[^>]+>,/ig
str.match(re);
/* [
"'00000002 BLABLA'<MADRID CENTRO>,",
"'00000006 FAFAFAFA'<BARCELONA ORIENTE>,",
"'00000919 HUAWEI'<LA CANDELA>,"
] */
因为你正在使用^
用这个 :
''[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>,"]
这个正则表达式对我有用:
'[0-9]{8}\s[a-zA-Z\'{1}]*[\<{1}a-zA-Z\s\>,{1}]*
您应该使用此工具来测试正则表达式: http : //www.gethifi.com/tools/regex
编辑:像@aelor说的那样,你正在使用的^
只会与行首相匹配。 我还添加\\ s来捕捉表达式最后部分的空格(比如
你的错误:
^
)。 当然,你只能得到一个匹配:一行的开头。 []
)是某种形式的分组。 他们不是。 g
) i
) 更好
var regex = /'[0-9]{8}\s[a-z]*'<[a-z ]*>,/ig;
在任何情况下:可能是你过于具体。 关于什么:
var regex = /'[^']*'<[^>]*>,/g;
过于具体的正则表达式很难调试和维护,同时没有真正的好处。 (尽管不够具体表达,但要小心。找到合适的平衡点。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.