我的正则表达式模式不起作用

时间:2016-02-23 09:29:23

标签: javascript regex

我正在尝试在javascript中为以下模式编写正则表达式,但它无效。有人可以建议吗?

模式:“,anyONELetter,”

示例字符串

James Yashiro,a,b,c Dean J Loza,a,b

必填字符串:

James Yashiro, Andrew J Loza

我的javascript:

var string = string.replace(/[,^a-z{1},]/gi, '');

2 个答案:

答案 0 :(得分:2)

一对未转义的[...]内的所有内容都被视为一个符号。 [\s*]匹配1个空格或*个字符。您的[,^a-z{1},]正则表达式匹配1个符号,该符号可以是,^,ASCII字母,{1,或}或逗号。

您需要使用以下正则表达式将所有, +独立字母图案替换为,

/(?:,[a-z]\b)+,*/gi

并替换为,。请参阅regex demo

(?:,[a-z]\b)+,*匹配以下一个或多个序列:

  • ,逗号后跟
  • [a-z]\b - 一个ASCII字母(因为\b之后的整个单词)

后跟零个或多个逗号(,*)。

然后,您需要使用另一个正则表达式修剪字符串中的尾随,符号:

.replace(/,+$/, '')

,+$匹配字符串末尾的一个或多个逗号($断言字符串末尾的位置,因此字符串中的逗号将保持不变。)

JS演示:



var s = 'James Yashiro,a,b,c, Dean J Loza,a,b';
var res = s.replace(/(?:,[a-z]\b)+,*/gi, ',').replace(/,+$/, '');
document.write(res);




答案 1 :(得分:0)

我认为你应该试试像这样的正则表达式:

/(,[a-z],*?)/gi

并替换为空字符串。

示例:

var test = 'James Yashiro,a,b,c, Dean J Loza,a,b';
var result = test.replace(/(,[a-z],*?)/gi, '');
document.write(result);