[英]Regex: Match words and special characters unless in quotes
我已經看過其他幾乎相同的問題,通過一些自定義,我找到了一個可在RegExr中使用的解決方案。 問題在於它在Javascript中不起作用。
表達式: ([^\\s]*"[^"]+"[^\\s]*)|[^"]?\\w+[^"]?
測試字符串: +w1 @w2 (w3 (w4) @"w5 6"
預期結果: ['+w1', '@w2', '(w3', '(w4)', '@"w5 w6"']
Javascript代碼: console.log(/([^\\s]*"[^"]+"[^\\s]*)|[^"]?\\w+[^"]?/g.exec(test_str));
Javascript結果: ["+w1 ", undefined]
(在FF15和Chrome 22中測試)
我在MDN上查找了文檔,但是除了全局標志之外沒有其他相關標志。 只是為了嘗試我添加了多行和不區分大小寫的標志,但是它們沒有用。
知道是什么使它在RegExr中工作時在Javascript中中斷嗎? (而且Flash動作腳本也不是ECMAScript,所以RegExr不應使用相同的regex引擎嗎?)在RegExr中,唯一啟用的標志是全局標志。
編輯:另一個問題是"w1 \\"w2\\" w3"
將被匹配為兩個單詞,而它應該是一個單詞。 有任何想法嗎?
嘗試:
console.log('+w1 @w2 (w3 (w4) @"w5 6"'.match(/[^"\s]+(?:".*"\S*)?/g));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.