繁体   English   中英

正则表达式在 JS 中的符号前排除字符

[英]regex excluding a char before a symbol in JS

我目前想让城市名称的第一个字母大写; 但由于在我的国家,我们有很多城市的名称由多个单词组成(例如纽约),我目前正在使用这个正则表达式:

/\w\S*/g

所以我正在使用这个 function

function capitalizeWords(myString) {
  return myString.replace(/\w\S*/g, w => w.replace(/^\w/, c => c.toUpperCase()))
}

这样我就可以在New York new york

但现在我有一个小问题,我有一些城市,比如

sauze d'oulx

我需要将其转换为Sauze d'Oulx ,不包括d ,或者在任何情况下'符号之前的第一个字符。

在已知字符之前排除一个字符的技巧是什么?

您可以在匹配和捕获预期匹配之前将所有异常定义为替代:

 const texts = ["new york", "sauze d'oulx"]; const capitalizeWords = (myString) => myString.replace(/\bd['']|(\w)(\S*)/g, (m, g, h) => g? g.toUpperCase() + h: m); for (const text of texts) { console.log(text, '->', capitalizeWords(text)); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM