簡體   English   中英

正則表達式:匹配單詞和特殊字符,除非用引號引起來

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

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