我正在尝试在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, '');
答案 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);