您的位置:

正则表达式判断是否包含指定字符串

一、正则表达式判断是否包含特殊字符

特殊字符除了字母、数字,还包括符号、空格等,在正则表达式中通过转义字符\来表示,如\?表示匹配问号。

function hasSpecialChar(str){
    let reg = /[\`\~\!\@\#\$\%\^\&\*\(\)\_\+\-\=\{\}\[\]\|\:\;\"\'\<\>\,\.\?\/\s]/;
    return reg.test(str);
}

上述代码使用了字符集 [],表示匹配其中任意一个字符。使用\s匹配空格,\\用来转义。

二、正则表达式字符串中包含指定字符

在正则表达式中使用 | 来匹配多个条件,可以用来判断字符串中是否包含指定字符,如下例所示判断是否包含a或b或c。

function hasLetter(str, letter){
    let reg = new RegExp(letter);
    return reg.test(str);
}

console.log(hasLetter('abcdefg', 'a|b|c')); // true

上述代码使用了RegExp构造函数,可以动态生成正则表达式对象。

三、正则表达式不包含指定字符串

在正则表达式中使用^表示匹配不包含指定字符或字符串的情况,如下例所示判断是否不包含abc字符串。

function notContain(str){
    let reg = /^((?!abc).)*$/;
    return reg.test(str);
}

console.log(notContain('ABCDEFG')); // true
console.log(notContain('ABCDabcEFG')); // false

上述代码使用了负向前瞻式 (?!...),表示后面不包含括号内的内容。后面的.*表示匹配0个或多个任意字符。

四、正则表达式判断是否包含汉字

正则表达式匹配汉字,需要用到unicode编码,如下例所示判断是否包含汉字。

function hasChinese(str){
    let reg = /[\u4e00-\u9fa5]/; 
    return reg.test(str);
}

console.log(hasChinese('hello 世界')); // true
console.log(hasChinese('hello world')); // false

上述代码使用了unicode编码表示汉字字符范围 [\u4e00-\u9fa5]。

五、正则表达式判断是否包含符号

正则表达式匹配符号,需要使用对应符号的转义字符。\d 表示匹配数字字符,在[]中表示匹配非数字字符。

function hasSymbol(str){
    let reg = /[^\d\w]/; 
    return reg.test(str);
}

console.log(hasSymbol('hello*world')); // true
console.log(hasSymbol('helloworld')); // false

上述代码使用了[]中加^表示非,匹配任意非数字、非字母的字符,即符号。