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