使用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查找非单词字符。