使用 JavaScript 正则表达式查找字符串中的非单词字符


在本教程中,我们将学习如何使用 JavaScript 正则表达式在字符串中查找非单词字符。实际上,**单词字符**包括**A-Z、a-z、0-9** 和 _。而**非单词字符**则指除了单词字符以外的字符,例如 !、@、#、$、%、^、&、*、(、)、{、} 等。我们将非单词字符表示为 \W。我们都知道 JavaScript 中的 RegExp(正则表达式)。RegExp 是一个对象,它指定用于对字符串执行搜索和替换操作或进行输入验证的模式。RegExp 在 ES1 中引入,并得到所有浏览器的完全支持。

非单词字符的 ASCII 码为:

! - 33, @ - 64, #- 35, $ - 36, % - 37, ^ - 94, & - 38, * - 42, + - 43, - - 45, ( - 40, ) - 41.

现在,我们将检查如何使用 RegExp 查找非单词字符。

语法

非单词字符或 \W 字符的语法为:

new RegExp("\W") or simply /\W/ 

/\W/,在 ES1 中引入。它完全受所有浏览器支持,例如 Chrome、IE、Safari、Opera、FireFox 和 Edge。

RegExp 具有修饰符,例如 g、i、m。“g”用于执行全局匹配,“i”用于执行不区分大小写的匹配,“m”用于执行多行匹配。

带有修饰符的 \W 语法,例如:

new RegExp("\W", "g") or simply /\W/g

在字符串中查找非单词字符的步骤

**步骤 1** - 声明并定义一个包含一些非单词字符的字符串。

**步骤 2** - 定义正则表达式模式。

**步骤 3** - 通过将字符串与正则表达式模式匹配来查找非单词字符。

**步骤 4** - 显示结果。

示例

在下面的示例中,我们使用 RegExp 和 match() 方法在字符串中查找非单词字符。

<!DOCTYPE html>
<html>
<body>
   <h1>Finding non-word character</h1>
   <p>Non-word characters :
      <p id="result"></p>
   </p>
   <script>
      let text = "_HiWelcome@2022%!$%&*@!{[()]}";
      let pattern = /\W/g;
      let result = text.match(pattern);
      document.getElementById("result").innerHTML = result;
   </script>
</body>
</html>

示例

在这里,如果给定文本中存在非单词字符,match() 方法将返回一个包含现有非单词字符的数组。如果没有,则返回 null。让我们看另一个例子。

<!DOCTYPE html>
<html>
<body>
   <h1>Finding non-word character</h1>
   <p id="result"></p>
   <script>
      let text = "_HiWelcome2022";
      let pattern = /\W/g;
      let result = text.match(pattern);
      if(result == null){
         document.getElementById("result").innerHTML = "Sorry, No non-word present in the text";
      }else{
         document.getElementById("result").innerHTML = "Non-word character(s):" +result;
      }
   </script>
</body>
</html>

这里,文本中没有非单词字符。match() 方法返回 null。因此,如果语句被执行。如果文本包含如第一个示例所示的非单词字符,则 match() 方法将返回一个包含现有非单词字符的数组。因此,else 语句将执行。

示例

现在,我们将检查如何在给定文本中替换单词字符。让我们看一个例子

<!DOCTYPE html>
<html>
<body>
   <h1>Replace non-word character(s)</h1>
   <p>After replacing non-word character(s) :
      <p id="result"></p>
   </p>
   <script>
      let text = "_HiWelcome@2022%!$%&*@!{[()]}";
      let pattern = /\W/g;
      let result = text.split(pattern).join(" ");
      document.getElementById("result").innerHTML = result;
   </script>
</body>
</html>

示例

我们还将检查另一种替换非单词字符的方法。让我们看一个例子

<!DOCTYPE html>
<html>
<body>
   <h1>Replace non-word character(s)</h1>
   <p>After replacing non-word character(s) :
      <p id="result"></p>
   </p>
   <script>
      let text = "_HiWelcome@2022%!$%&*@!{[()]}";
      let pattern = /\W/g;
      let result = text.replace(pattern , " ");
      document.getElementById("result").innerHTML = result;
   </script>
</body>
</html>

正如我们所讨论的,g 用于全局匹配。它不会在第一次出现时停止,而是会查找所有出现。

我希望本教程能帮助您了解如何在 JavaScript 中使用 RegExp 查找非单词字符。

更新于:2022年12月8日

1K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告