![](/img/trans.png)
[英]Nodejs: How to replace certain characters within an array with other characters in javascript
[英]In Regex How to find and replace characters when they are not within other alphabetic characters?
您发布的正则表达式不会将_
视为单词边界,因此不会按预期替换该字符。
为了在要替换的d
字符之前或之后也包含此字符,可以使用类似于以下的表达式:
替换d
:
/(\\b|_)(d)(\\b|_)/mg
替换dd
:
/(\\b|_)(dd)(\\b|_)/mg
或以相同的方式替换两者(如果可以):
/(\b|_)(d|dd)(\b|_)/mg
在StackOverflow上另一个线程中此答案下的注释中 ,还建议使用可以格式化日期的库,而不是自己实现。
更新:正如有人提到的那样,与此有关的问题还在于,在正则表达式中包含_
,在替换后将其删除。 但是,您可以调用replace并使用捕获括号引用,如下所示:
str.replace(/(\b|_)(d)(\b|_)/mg, "$1" + number + "$3")
我已经更新了此答案中发布的早期表达式,以使用此方法。
请注意,我不知道您想考虑的所有情况,因此,如果您在使用建议的解决方案时遇到任何问题,或者在您的情况下无法正常工作,请告诉我,以便我们为您提供帮助。
我可以先行使用,如果您不使用JavaScript,那么也可以先行使用。
前瞻示例,检查是否没有以下字母字符:
(?=[^a-zA-Z])
如果您使用的是JavaScript,则它不支持向后搜索,因此您将需要使用捕获组和反向引用。
对于JS,请在最外面的括号中捕获该部分,然后使用\\ 1,\\ 2 ...进行定位:
[^a-zA-Z](d(?=[^a-zA-Z]))
非JS可以使用lookbehind:
(?<=[^a-zA-Z])d(?=[^a-zA-Z])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.