gpt4 book ai didi

javascript - 使用 Javascript 正则表达式过滤掉特殊字符

转载 作者:行者123 更新时间:2023-11-27 23:18:30 26 4
gpt4 key购买 nike

美好的一天,

我正在创建一个 JavaScript 函数来从数据库中排除某些代码。例如,以下是有效代码:

  • FF99
  • 1G499
  • RNDD

换句话说,我希望代码仅包含字母数字。我在 Chrome 中打开控制台并尝试:

> re = new RegExp('\w+')
> re.test('whatever')
true
> re.test('what???')
true
> var test = new RegExp('^\w+')
> test.test('what')
true
> test.test('what999')
true
> test.test('what???')
true

所以我知道 \w 可以是 0-9、a-z、A-Z。我不知道为什么如果我输入“?”,正则表达式就会通过当他们不应该的时候。

我错过了什么吗?

最佳答案

您误解了您的结果。正则表达式 \w+ 表示“一个或多个单词字符”。它没有指定在字符串中的何处可以找到这些字符。在您的所有测试中,提供的字符串至少包含一个单词字符,因此它们全部通过。

您要做的是确保字符串仅包含字母数字。尝试以下正则表达式:

^\w+$

分解后,这意味着:

^  = match start of string
\w = letters or digits
+ = one or more of the previous element (in this case, the set) (this is greedy)
$ = match the end of the string

在英语中,这意味着“在字符串的开头和结尾之间,仅匹配字母数字字符。匹配尽可能多的字符,或者根本不匹配”

Documentation on ^ and $

注意:如果您将正则表达式编写为字符串,则需要对 \ 进行转义,如下所示:

new RegExp("^\\w+$")

否则,JavaScript 会将 \w 解释为 escape sequence ,但事实并非如此。您还可以使用语法

new RegExp(/^\w+$/)

在这种情况下,您不需要转义 \,因为它不是字符串。

关于javascript - 使用 Javascript 正则表达式过滤掉特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35613264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com