一、正则表达式判断是否包含特殊字符
特殊字符除了字母、数字,还包括符号、空格等,在正则表达式中通过转义字符\来表示,如\?表示匹配问号。
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
上述代码使用了[]中加^表示非,匹配任意非数字、非字母的字符,即符号。