繁体   English   中英

使用正则表达式替换在字符串中的特定位置添加字符

[英]Use Regex Replace to add a character at specific location in string

我有这样的字符串

Material TD Vandal High Supreme Signal Blue / University Red-B

我想添加连字符,因此最终字符串变为

Material TD Vandal High Supreme Signal - Blue / University Red-B

连字符应在第一个/字符串可以有多个/之前添加单词

我尝试了string.replace(/([A-Za-z][ ][/])/g, '-$1');

尝试了几件事,但没有任何效果。

当您说应该在第一个/前面加上连字符时 ,问题是为什么要使用/g修饰符? g表示“全局”,它将尝试查找字符串中所有不重叠的正则表达式匹配项。 首先,您不需要该修饰符。

其次, [A-Za-z]匹配单个字符。 由于正则表达式引擎从左到右匹配字符串,因此与该模式匹配的字母后应加一个空格和一个斜杠,因此它将匹配e /而不是Blue / 要匹配整个单词,您需要在[A-Za-z]之后添加+量词。 如果您不在乎这些字符是字母还是数字(或_ ),也可以只使用\\w 即使\\S+ ,一个或多个非空白也可以使用。

为了使它接近原始,我建议:

var result = string.replace(/[A-Za-z]+\s+\//, "- $&");

参见regex演示

细节

  • [A-Za-z]+ -1个或多个ASCII字母
  • \\s+ -1+空格
  • \\/ -一个/字符(因为在正则表达式文字中使用,所以已转义)。

替换模式中的$&是指向整个匹配项的替换后向引用,无需用捕获组包装整个模式。

暂无
暂无

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

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