【问题标题】:RegExp that match everything except letters匹配除字母以外的所有内容的正则表达式
【发布时间】:2013-04-02 08:04:15
【问题描述】:

我正在尝试编写匹配除字母之外的所有内容的正则表达式。到目前为止,我已经写了这样的东西:

/[^a-zA-Z]+/

但是,在测试过程中,我发现当我写例如“qwe”或“qqqqqweqwe123123”或类似的东西时它工作得很好,但是当我从数字开始字符串时,例如:“1qweqwe”,它没有不匹配。

我还需要做什么才能匹配输入字符串中任何位置的字母以外的所有内容?

提前致谢。

编辑:我发现的正确正则表达式是:

/^[^a-zA-Z]*$/

【问题讨论】:

  • /[^a-zA-Z]+/.test('1qweqwe') 产生true
  • @Jack 这个解决方案对我不起作用。我发现正确的正则表达式是这样的:/^[^a-zA-Z]*$/

标签: javascript regex


【解决方案1】:

我还需要做什么才能匹配输入字符串中任何位置的字母以外的所有内容?

您需要使用正则表达式标志来实现这一点

试试这个

'1qwe2qwe'.match(new RegExp(/[^a-zA-Z]+/g))

它应该返回["1", "2"]

正则表达式末尾的g 标志告诉正则表达式引擎在找到一个匹配项后继续遍历字符串。如果没有 g 标志,它只会在找到第一个匹配项时放弃遍历。可以找到参考here

【讨论】:

  • 您的解决方案对我不起作用。我发现正确的正则表达式是这样的:/^[^a-zA-Z]*$/
【解决方案2】:

您的正则表达式没有锚定,因此它将产生true 用于部分匹配。如果整个字符串不应该包含字母:

if (/^[^a-zA-Z]+$/.test(str)) {
    // all characters are not alphabetical
}

或者更确切地说,如果所有字符都必须是数字(或空字符串):

if (/^\d*$/.test(str)) {
    // all characters are digits
}

【讨论】:

    猜你喜欢
    • 2019-02-15
    • 2013-02-27
    • 2012-04-05
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多