[英]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.