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

My Regular Expression pattern does not work

本文关键字:不起作用 模式 正则表达式 我的      更新时间:2023-09-26

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

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

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

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

并替换为一个,.查看正则表达式演示

(?:,[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);

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

/(,[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);