使用 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+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.