![](/img/trans.png)
[英]How to detect if there are anything after a certain character by Javascript?
[英]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.