簡體   English   中英

嘗試替換字符串時正則表達式替換不起作用 - JS

[英]Regex replace not working when trying to replace a string - JS

我有一堆從這里得到的常見正則表達式模式。 我嘗試將它們應用於字符串,但它們似乎沒有修改任何內容。 它只是返回相同的值。 你能告訴我我做錯了什么嗎?

 const str = 'sadas87676szdhgzshdgszhjg,##%$,.%'; const commonRegexPatterns = { DIGITS: /^[0-9]+$/, ALPHABETIC: /^[a-zA-Z]+$/, ALPHANUMERIC: /^[a-zA-Z0-9]+$/, DATE: /^(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}$/, EMAIL: /^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/, ZIP: /^[0-9]{5}(?:-[0-9]{4})?$/, DIGITSWITHCOMMA: /^[\d,]/, DIGITSWITHCOMMAPERCENTAGE: /^[\d,%]/, } console.log('DIGITS', str.replace(commonRegexPatterns.DIGITS, '')); console.log('ALPHABETIC', str.replace(commonRegexPatterns.ALPHABETIC, '')); console.log('ALPHANUMERIC', str.replace(commonRegexPatterns.ALPHANUMERIC, '')); console.log('DIGITSWITHCOMMA', str.replace(commonRegexPatterns.DIGITSWITHCOMMA, '')); console.log('DIGITSWITHCOMMAPERCENTAGE', str.replace(commonRegexPatterns.DIGITSWITHCOMMAPERCENTAGE, '')); console.log('ZIP', str.replace(commonRegexPatterns.ZIP, ''));

那么,你的正則表達式模式是錯誤的。 好吧,不是真的“錯”了,但它們似乎不是你想要的。 例如, DIGITS

^[0-9]+$

此模式具有錨點( ^是字符串的開頭, $是結尾)。 它將匹配整個數字字符串,但不僅僅是字符串中的任何數字。 為了您的目的,您希望它沒有錨點,例如:

[0-9]+

這同樣適用於代碼段中的大多數其他模式。 如果您只是想匹配字符串的一部分,請移除錨點。 此外,由於您似乎試圖刪除字符串中出現的所有模式,您可能希望在模式中使用g標志 例如, ALPHABETIC (沒有錨點):

/[a-zA-Z]+/

這將匹配字符串中的第一組字母,但不匹配其后的字母。 相反,如果你使用

/[a-zA-Z]+/g

您將能夠替換每場比賽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM