我正在尝试从逗号后的字符串中删除除第一个字母之外的所有字符。字符串基本上是姓、名。
例如:
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")));