js 正则表达式过滤非法字符

js 正则表达式过滤非法字符

正则表达式是一种强大的字符串匹配工具,可以帮助我们过滤掉字符串中的非法字符。在 JavaScript 中,我们可以使用正则表达式的相关方法来处理字符串,包括测试一个字符串是否符合指定的规则,查找字符串中是否包含满足特定规则的子字符串,替换字符串中满足特定规则的子字符串等。

正则表达式基础

正则表达式是由普通字符和元字符(即表示特殊含义的字符)组成的表达式,可以用来匹配文本中的某些字符。在 JavaScript 中,我们可以使用 RegExp 构造函数来创建正则表达式。

// 创建一个匹配字符串 "Hello World!" 的正则表达式
const reg = /Hello World!/;
JavaScript

上面的例子创建一个匹配字符串 “Hello World!” 的正则表达式,其中 “/” 包围的部分是正则表达式的体现。除了使用直接量语法创建正则表达式之外,我们还可以使用 RegExp 构造函数创建正则表达式。

// 创建一个匹配字符串 "Hello World!" 的正则表达式
const reg1 = new RegExp("Hello World!");

// 创建一个匹配以 "h" 开头,以 "!" 结尾的字符串的正则表达式
const reg2 = new RegExp("^h.*!$");
JavaScript

上面的例子使用 RegExp 构造函数分别创建了两个匹配字符串 “Hello World!” 和以 “h” 开头,以 “!” 结尾的字符串的正则表达式。

正则表达式匹配

在 JavaScript 中,我们可以使用正则表达式的 test() 方法来测试一个字符串是否符合正则表达式的规则。

// 创建一个匹配以 "h" 开头,以 "!" 结尾的字符串的正则表达式
const reg = /^h.*!$/;

// 测试字符串 "Hello World!" 是否符合正则表达式的规则
if (reg.test("Hello World!")) {
  console.log("符合正则表达式的规则");
} else {
  console.log("不符合正则表达式的规则");
}
JavaScript

在上面的例子中,我们创建了一个匹配以 “h” 开头,以 “!” 结尾的字符串的正则表达式,并测试了字符串 “Hello World!” 是否符合正则表达式的规则。由于 “Hello World!” 符合正则表达式的规则,因此会输出 “符合正则表达式的规则”。

除了 test() 方法,我们还可以使用正则表达式的 exec() 方法来查找字符串中符合规则的部分。

// 创建一个匹配以 "h" 开头,以 "!" 结尾的字符串的正则表达式
const reg = /^h.*!$/;

// 在字符串 "Hello World!" 中查找符合正则表达式的部分
const result = reg.exec("Hello World!");

if (result !== null) {
  console.log("匹配的部分为:" + result[0]); // "Hello World!"
} else {
  console.log("没有匹配的部分");
}
JavaScript

在上面的例子中,我们同样创建了一个匹配以 “h” 开头,以 “!” 结尾的字符串的正则表达式,并使用 exec() 方法在字符串 “Hello World!” 中查找符合规则的部分。由于 “Hello World!” 符合正则表达式的规则,因此会输出 “匹配的部分为:Hello World!”。

正则表达式替换

在 JavaScript 中,我们可以使用字符串的 replace() 方法来替换指定的字符串。

// 创建一个匹配以 "h" 开头,以 "!" 结尾的字符串的正则表达式
const reg = /^h.*!$/;

// 将字符串 "Hello World!" 中符合正则表达式的部分替换为 "Hi, JavaScript!"
const str = "Hello World!";
const newStr = str.replace(reg, "Hi, JavaScript!");

console.log(newStr); // "Hi, JavaScript!"
JavaScript

在上面的例子中,我们同样创建了一个匹配以 “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 中,我们可以使用正则表达式来过滤掉字符串中的非法字符。以下是一个示例代码:

// 过滤掉字符串中的非法字符
function filterIllegalChar(str) {
  const reg = /[^\w\u4e00-\u9fa5]+/g;
  return str.replace(reg, '');
}

const str = 'hello world! 你好,世界!';
const newStr = filterIllegalChar(str);

console.log(newStr); // "hello world 你好世界"
JavaScript

在上面的示例代码中,我们创建了一个可以匹配所有非字母、数字和汉字字符的正则表达式 /[^\w\u4e00-\u9fa5]+/g,并使用 replace() 方法将字符串中匹配到的非法字符替换为空字符串。通过调用 filterIllegalChar() 函数,我们可以很方便地过滤掉字符串中的非法字符。

结论

在 JavaScript 中,使用正则表达式可以轻松地匹配、查找和替换字符串。通过结合正则表达式,我们可以方便地实现对字符串中非法字符的过滤,保证程序的数据安全。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册