js 正则表达式过滤非法字符
正则表达式是一种强大的字符串匹配工具,可以帮助我们过滤掉字符串中的非法字符。在 JavaScript 中,我们可以使用正则表达式的相关方法来处理字符串,包括测试一个字符串是否符合指定的规则,查找字符串中是否包含满足特定规则的子字符串,替换字符串中满足特定规则的子字符串等。
正则表达式基础
正则表达式是由普通字符和元字符(即表示特殊含义的字符)组成的表达式,可以用来匹配文本中的某些字符。在 JavaScript 中,我们可以使用 RegExp 构造函数来创建正则表达式。
上面的例子创建一个匹配字符串 “Hello World!” 的正则表达式,其中 “/” 包围的部分是正则表达式的体现。除了使用直接量语法创建正则表达式之外,我们还可以使用 RegExp 构造函数创建正则表达式。
上面的例子使用 RegExp 构造函数分别创建了两个匹配字符串 “Hello World!” 和以 “h” 开头,以 “!” 结尾的字符串的正则表达式。
正则表达式匹配
在 JavaScript 中,我们可以使用正则表达式的 test() 方法来测试一个字符串是否符合正则表达式的规则。
在上面的例子中,我们创建了一个匹配以 “h” 开头,以 “!” 结尾的字符串的正则表达式,并测试了字符串 “Hello World!” 是否符合正则表达式的规则。由于 “Hello World!” 符合正则表达式的规则,因此会输出 “符合正则表达式的规则”。
除了 test() 方法,我们还可以使用正则表达式的 exec() 方法来查找字符串中符合规则的部分。
在上面的例子中,我们同样创建了一个匹配以 “h” 开头,以 “!” 结尾的字符串的正则表达式,并使用 exec() 方法在字符串 “Hello World!” 中查找符合规则的部分。由于 “Hello World!” 符合正则表达式的规则,因此会输出 “匹配的部分为:Hello World!”。
正则表达式替换
在 JavaScript 中,我们可以使用字符串的 replace() 方法来替换指定的字符串。
在上面的例子中,我们同样创建了一个匹配以 “h” 开头,以 “!” 结尾的字符串的正则表达式,并使用 replace() 方法将字符串 “Hello World!” 中符合规则的部分替换为 “Hi, JavaScript!”。
正则表达式中的元字符
正则表达式中有很多元字符,用来表示不同的特殊含义。以下是常见的元字符:
.
:匹配除了换行符外所有的字符。例如/a.b/
可以匹配 “aab”、”acb” 等字符串。*
:匹配前面的字符 0 次或多次。例如/a*b/
可以匹配 “ab”、”aab”、”aabb” 等字符串。+
:匹配前面的字符 1 次或多次。例如/a+b/
可以匹配 “ab”、”aab”、”aabb” 等字符串,但不能匹配 “b”。?
:匹配前面的字符 0 次或 1 次。例如/a?b/
可以匹配 “ab” 或 “b”。^
:表示匹配字符串的开头。例如/^a/
可以匹配以 “a” 开头的字符串。$
:表示匹配字符串的结尾。例如/ing/
可以匹配以 “ing” 结尾的字符串。[]
:匹配括号内的任意字符。例如/[abc]/
可以匹配 “a”、”b”、”c” 中的任意一个字符。[^]
:匹配除了括号内的字符之外的任意一个字符。例如/[^abc]/
可以匹配除了 “a”、”b”、”c” 之外的任意一个字符。|
:表示或关系。例如/a|b/
可以匹配 “a” 或 “b”。()
:表示分组。例如/a(bc)d/
可以匹配 “abcd” 中的 “bcd”。
过滤非法字符
在 JavaScript 中,我们可以使用正则表达式来过滤掉字符串中的非法字符。以下是一个示例代码:
在上面的示例代码中,我们创建了一个可以匹配所有非字母、数字和汉字字符的正则表达式 /[^\w\u4e00-\u9fa5]+/g
,并使用 replace() 方法将字符串中匹配到的非法字符替换为空字符串。通过调用 filterIllegalChar() 函数,我们可以很方便地过滤掉字符串中的非法字符。
结论
在 JavaScript 中,使用正则表达式可以轻松地匹配、查找和替换字符串。通过结合正则表达式,我们可以方便地实现对字符串中非法字符的过滤,保证程序的数据安全。