簡體   English   中英

正則表達式從字符串的開頭和結尾刪除某些字符

[英]Regex Expression to remove certain characters from string expect at the start and end

我正在嘗試創建一個正則表達式來從字符串中刪除所有不是空格、制表符或字母數字的字符。 盡管如果字符 % 存在並且字符串的開頭或結尾,則它們不應匹配。

到目前為止我有這個

(?!<=^\%^)*[^\w\s](?<!%)

但它沒有按預期工作: https://regexr.com/5mckp

例如

%foo: bar [10]%
foo% bar%
foo%bar

應該成為

%foo bar 10%
foo bar%
foobar

可能這樣的事情應該有效:

(?!^\%*)[^\w\s](?<!\%$)

您的錯誤在於序列^\%^永遠不會發生,因為您要求序列的開頭在 % 符號之后。 通用量詞也屬於%符號而不是負組。 您還應該檢查$行的結尾。 rest 很好

[^\w\s]不匹配不是字母數字的下划線,您需要[^\w\s]|_

在開始和結束時捕獲%以保留它們,使用

string.replace(/(^%|%$)|[^\w\s]|_/g, '$1')

證明 無后視可確保該模式在 Safari 和其他尚不支持后視的瀏覽器中工作。

JavaScript 代碼

 const strings = ['%foo: bar___ [10]%','foo% bar%','foo%bar']; strings.forEach( string => console.log(string.replace(/(^%|%$)|[^\w\s]|_/g, '$1')) )

暫無
暫無

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

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