有没有一个正则表达式可以删除字符串中逗号后的所有内容,除了第一个字母



我正在尝试从逗号后的字符串中删除除第一个字母之外的所有字符。字符串基本上是姓、名。

例如:

Smith,John

我尝试了以下操作,但它删除了逗号和逗号后的所有内容。

let str = "Smith,John";
str = str.replace(/s/g, ""); // to remove all whitespace if there is any at the beginning, in the middle and at the end
str = str.split(',')[0];

预期输出:Smith,J

谢谢!

或者尝试使用replace:的(,w).*

let str = "Smith,John";
str = str.replace(/(,w).*/, '$1');
console.log(str);

试试这个正则表达式:

w+,w

这将匹配逗号前的一个或多个字符,然后只匹配一个字符。

以下是演示:https://regex101.com/r/bKpWt7/1

注意:w[a-zA-Z0-9_]中的任何字符匹配。

考虑逗号周围的可选空格,可能还有多个"名称";逗号前:

*([^s,][^,n]*?) *, *([^s,]).*
  • *匹配可选空格
  • (捕获组1
    • *([^s,]匹配可选空格并至少匹配除空白字符或,之外的单个字符
    • [^,n]*?匹配除,或换行符以外的任何字符
  • )关闭组1
  • *, *在可选空格之间匹配逗号
  • ([^s,])捕获组2,匹配除,之外的单个字符或空白字符
  • .*匹配行的其余部分

Regex演示

在使用组1和组2的替换中,$1,$2之间有逗号

const regex = / *([^s,][^,n]*?) *, *([^s,]).*/;
[
"Smith,John Jack",
"Smith Lastname , Jack John",
"Smith  , John",
" ,Jack"
].forEach(s => console.log(s.replace(regex, "$1,$2")));

相关内容

最新更新