一个淘宝链接我是拿一个关键词,程序中的,去匹配这个链接中是否有这个关键词,然后再去看是否这个词的前后时候存在一些特殊的字符下面先贴方法
/**
* [myRegExp description]
*
* @param {[type]} str 进店关键词 [str description]
* @param {[type]} matchStr 粘贴进来的关键词 [matchStr description]
* @param {[type]} isMatch 是否开启关键字匹配 [isMatch description]
*
* @return {[type]} 返回值控制是否放行下一个输入框 [return description]
*/
function myRegExp(str, matchStr, isMatch) {
// 这个方法用来判断到底 被匹配的文字之前的包含了什么之后包含了什么
// str 进店关键词 matchStr 被匹配的字符串 就是你粘贴的东西
if (!(matchStr && str)) return false;
var containSpecial = RegExp(
/[(\ )(\~)(\【)(\】)(\,)(\;)(\a-zA-Z)(\¥)(\!)(\@)(\#) (\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\_)(\+)(\=) (\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/) (\<)(\>)(\?)(\)]+/
);
if (isMatch) {
// 粘贴的内容需要匹配关键词
let res = RegExp(str)
if (!matchStr.match(res)) return false;
// 这个判断很有必要 要是条件没有匹配到就是null 所以下边的操作就会出错
// 获取到字符在这里边存在的起始索引
let startIndex = matchStr.match(res).index;
// 关键词的长度,用来计算关键词之后的长度
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 {
// 粘贴的内容不需要匹配关键词但是要匹配是否含有一些特殊字符
if (containSpecial.test(matchStr)) {
// 证明存在关键词
return true;
} else {
return false;
}
}
}
let val = 'kkkkk【你好,笑呵呵5555.'
let str = '你好,笑呵呵'
console.log(myRegExp(str, val,true))
上边的注释已经很详尽了,应该不会有什么难点
网友评论