一個(gè)淘寶鏈接我是拿一個(gè)關(guān)鍵詞,程序中的胧华,去匹配這個(gè)鏈接中是否有這個(gè)關(guān)鍵詞榨咐,然后再去看是否這個(gè)詞的前后時(shí)候存在一些特殊的字符下面先貼方法
/**
* [myRegExp description]
*
* @param {[type]} str 進(jìn)店關(guān)鍵詞 [str description]
* @param {[type]} matchStr 粘貼進(jìn)來的關(guān)鍵詞 [matchStr description]
* @param {[type]} isMatch 是否開啟關(guān)鍵字匹配 [isMatch description]
*
* @return {[type]} 返回值控制是否放行下一個(gè)輸入框 [return description]
*/
function myRegExp(str, matchStr, isMatch) {
// 這個(gè)方法用來判斷到底 被匹配的文字之前的包含了什么之后包含了什么
// str 進(jìn)店關(guān)鍵詞 matchStr 被匹配的字符串 就是你粘貼的東西
if (!(matchStr && str)) return false;
var containSpecial = RegExp(
/[(\ )(\~)(\【)(\】)(\柬泽,)(\蛇耀;)(\a-zA-Z)(\¥)(\!)(\@)(\#) (\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\_)(\+)(\=) (\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/) (\<)(\>)(\?)(\)]+/
);
if (isMatch) {
// 粘貼的內(nèi)容需要匹配關(guān)鍵詞
let res = RegExp(str)
if (!matchStr.match(res)) return false;
// 這個(gè)判斷很有必要 要是條件沒有匹配到就是null 所以下邊的操作就會(huì)出錯(cuò)
// 獲取到字符在這里邊存在的起始索引
let startIndex = matchStr.match(res).index;
// 關(guān)鍵詞的長度结闸,用來計(jì)算關(guān)鍵詞之后的長度
let len = str.length;
// 匹配到的前半部分
let start = matchStr.substring(0, startIndex)
// 匹配到的后半部分
let back = matchStr.substring(startIndex + len)
if (containSpecial.test(start) && containSpecial.test(back)) {
// 前后都包含特殊字符
return true;
} else {
return false;
}
} else {
// 粘貼的內(nèi)容不需要匹配關(guān)鍵詞但是要匹配是否含有一些特殊字符
if (containSpecial.test(matchStr)) {
// 證明存在關(guān)鍵詞
return true;
} else {
return false;
}
}
}
let val = 'kkkkk【你好唇兑,笑呵呵5555.'
let str = '你好,笑呵呵'
console.log(myRegExp(str, val,true))
上邊的注釋已經(jīng)很詳盡了桦锄,應(yīng)該不會(huì)有什么難點(diǎn)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者