簡體   English   中英

正則表達式與特殊字符匹配

[英]RegEx match with special characters

我有一個string.match條件一直起作用,直到我意識到某些單詞是“ personal(computer)在單詞中帶有括號之類的特殊字符。 例如,我的代碼抓取要與之比較的術語“個人(計算機)”,然后搜索數據以查找該實例的任何實例,但是使用

string1.match(stringtarget,"ig"); //returns null 

我是regex的新手,因此如何解決此問題以使其適用於特殊字符。

如果不需要正則表達式功能,則可以使用indexOf

if (string1.toLowerCase().indexOf(stringtarget.toLowerCase()) >= 0) {
    // It's in there
}

否則(並且我猜您正在使用match是有原因的!),您必須對stringtarget進行預處理,以轉義任何特殊字符。

例如,這是我在最近的項目中使用的一個功能,正是出於類似的PHP函數的啟發:

if (!RegExp.escape) {
    (function() {
        // This is drawn from http://phpjs.org/functions/preg_quote:491
        RegExp.escape = RegExp_escape;
        function RegExp_escape(str) {
            return String(str).replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!<>\|\:])/g, '\\$1');
        }
    })();
}

所以:

var match = string1.match(RegExp.escape(stringtarget),"ig");

您可以使用preg_quote javascript端口轉義正則表達式特定的字符。

暫無
暫無

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

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