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