如何在字符串中替换除特定的正则表达式之外的所有模式?

时间:2018-02-27 02:17:38

标签: regex

如何使正则表达式在其中包含一系列名称和标题大小写中的所有名称,除了以下模式,这些模式应该单独使用:[\-\ ][A-Z][a-z]{1,2}[A-Z][\-\ ][v][ao][n]用于JavaScript?

也就是说,忽略McDMacD-McD-MacDvonvan?也就是说,我想“修复”在混乱的情况下键入的名称,例如LaToNYA von fRANKENSTEIN McDONALD-MacINTOSHLaTonya von Frankenstein McDonald-MacIntosh

我使用以下内容作为“title casing”(将每个名字的第一个字母大写,并将名称的其余部分用于下限):

name = name.replace(/\b\w+/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 

当应用于上述名称时,这会产生Latonya Von Frankenstein Mcdonald-Macintosh,这是不可取的,特别是如果输入姓名的人输入LaTonyavonMcDonaldMacIntosh并且它违背了他们的意愿。如何调整我的替换以保留单独作为正则表达式给出的模式(如果用户键入latonyaMACDONALDVON,那么我可以更改为{{1} },LatonyaMacdonald)?

0 个答案:

没有答案