繁体   English   中英

某些字符的正则表达式以及之后的任何内容

[英]Regex for certain character and anything after that

当它出现在一个数字或任何其他字符之间时,我需要将减号/连字符 (-) 称为减号。 否则,如果它出现在字符之间,我需要用空字符串替换它。

用于将 '-' 替换为空字符串

readOutText = 'akhila-hegde'
readOutText = readOutText.replace(/([A-Za-z])-([A-Za-z]){0}\w/gi, ' '); // replace '-' with ' '

现在在所有场景中将“-”替换为“减号”

9 - {{response}}
9-{{response}}
{{response}}-9
{{response}} - 9
7346788-literallyanything
literallyanything-347583475

我正在这个站点https://regexr.com/中尝试表达

我已经为9-{{response}}类型尝试了几个 RegEX。

readOutText = readOutText.replace(/([0-9])[ ]{0,1}-[ ]*\w/gi, ' minus '); // Not working 
readOutText = readOutText.replace(/([0-9])[ ]{0,1}-([a-zA-Z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/? ])\w/gi, ' minus ')

这两个都与字符串9-{{response}}中的9-{匹配

如果我知道上述类型,我可以对{{response}}-473类型做同样的事情

有人可以帮我解决我错过的事情吗?

我做了一个小例子,使用捕获组来捕获连字符并将其分类为减号或真 hpyhen。 https://regex101.com/r/zb2eZv/1

捕获组 1 是减号,捕获组 2 是连字符。

(?:\d+(-)\d+)|(?:\w+(-)\w+)

正则表达式可视化

https://jex.im/regulex/#!flags=&re=(%3F%3A%5Cd%2B(-)%5Cd%2B)%7C(%3F%3A%5Cw%2B(-)%5Cw% 2B)

这是一个小资源密集型,可能有更聪明的解决方案,但我相信你需要一个 multipass replace

  • digit dash digit的情况下替换
  • digit dash not-digit的情况下替换
  • not-digit dash digit的情况下替换

这将忽略所有non-digit dash non-digit情况。

顺便说一句, [0-9]可以替换为\d (数字), [ ]{0,1}可以替换为* (零个或多个空格)。

 const inputs = [ "akhila-hegde", "6 -4", "9 - {{response}}", "9-{{response}}", "{{response}}-9", "{{response}} - 9", "7346788-literallyanything", "literallyanything-347583475", "7- 8 and some-composed - word then 4-9" ]; const transformMinus = word => word.replace(/(\d) *- *(\d)/g, "$1 minus $2").replace(/(\d) *- *(\D)/g, "$1 minus $2").replace(/(\D) *- *(\d)/g, "$1 minus $2") const outputs = inputs.map(transformMinus); console.log(outputs);

暂无
暂无

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

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