繁体   English   中英

正则表达式包括特殊字符

[英]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来捕捉表达式最后部分的空格(比如

你的错误:

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

更好

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

在任何情况下:可能是你过于具体。 关于什么:

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

过于具体的正则表达式很难调试和维护,同时没有真正的好处。 (尽管不够具体表达,但要小心。找到合适的平衡点。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM