var str = "中央綜藝頻道(3)(高清),中國教育頻道(2)";
var sear = new RegExp('中央綜藝頻道(3)(高清)');
var test1 = '中央綜藝頻道(3)(高清)';
if (test1.indexOf(str) > 0) { alert("yes"); } else { alert("no"); } // 輸出 no
if (sear.test(str)) { alert('Yes'); } else { alert('no'); } // 輸出 no
test1.indexOf(str) 是在「短字符串」中找「長字符串」,永遠返回 -1。應為 str.indexOf(test1);() 是正則分組元字符,需雙重轉義:\\(3\\)\\(高清\\)。var str = "中央綜藝頻道(3)(高清),中國教育頻道(2)";
var target = "中央綜藝頻道(3)(高清)";
// 方法 1:indexOf(最簡單、效能最好)
if (str.indexOf(target) !== -1) { console.log("yes"); }
// 方法 2:正則(需動態構建時使用)
var regex = new RegExp(target.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')); // 全局轉義
if (regex.test(str)) { console.log("yes"); }
// 方法 3:ES6 includes(語義最清晰)
if (str.includes(target)) { console.log("yes"); }
includes / indexOf,無正則開銷;String.prototype.replace 配合元字符轉義正則 /[.*+?^${}()|[\]\\]/g 自動轉義;new RegExp(escaped, 'i');\\b 或 ^...$。「括號是正則關鍵字,要轉義」是核心;但更根本的是**選對工具**:固定子串查找用 includes,動態模式才用正則,並做好自動轉義。