【问题标题】:Regex: Allow all characters except four, restriction including underscore正则表达式:允许除四个之外的所有字符,限制包括下划线
【发布时间】:2021-01-05 18:25:38
【问题描述】:

我对正则表达式不是很熟悉。

我正在尝试对输入实施一些限制。我想允许所有数字和字符,包括 ~"$#*@ 等特殊字符,除了这 4 个:& ' % _

我试过了:

/[a-zA-Z0-9\-!@#\$\^*\)\(+=.-\~\"]/

但它不限制_ 下划线。如何限制下划线,有没有最好的方法允许除 4 之外的所有符号,而无需在正则表达式中写入所有符号?

【问题讨论】:

  • 这里有一个范围:.-\~(索引 46-126),该范围包括下划线(索引 95)。亲自查看regex101.com/r/NRe2Fj/1
  • 我会说用波浪号运算符/[^&'%_\s]/ 否定少数例外更容易,而不是列出所有允许的例外(\s 表示空格)
  • @buzatto 大概禁止列表还需要包含来自其他语言的字符。相比之下,允许列表会短得多。我相信人们也可以算出 46-94 和 96-126 的范围。

标签: javascript reactjs regex


【解决方案1】:

问题是您的范围 .-\~(索引 46-126)包括下划线(索引 95)。因此,您可以找出 46-94 和 96-126 是什么字符,或者使用前瞻来省略不需要的字符:

(?=[^&'%_])[a-zA-Z0-9\-!@#\$\^*\)\(+=.-\~\"]

https://regex101.com/r/rV0gxb/1


你也可以这样否定,这样更容易阅读:

(?![&'%_])[a-zA-Z0-9\-!@#\$\^*\)\(+=.-\~\"]

【讨论】:

    猜你喜欢
    • 2019-04-17
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多