【问题标题】:Regex to restrict several scenarios正则表达式限制几种情况
【发布时间】:2017-05-16 10:17:34
【问题描述】:

我需要一个 html 输入有一些限制:

  • 不允许有空格
  • 不允许同一个字符连续超过3次
  • 不允许数字,0-9

注意:必须允许重音字符(ç、á、ê 等...)

现在我刚刚实现了最后一条规则(不允许数字):

/^([^0-9]*)$/

如果你能告诉我这是在 html 输入上实现的,那就太好了。

【问题讨论】:

  • 编辑@TimBiegeleisen,谢谢
  • 我认为您需要环顾四周才能做到这一点,我不确定 HTML 输入正则表达式是否支持这一点。
  • "必须允许特殊的 utf-8 chars (ç, á, ê, etc...)" 太宽泛了,看 unicode 表说明清楚是否允许使用字符。
  • @CasimiretHippolyte,你是对的。好吧,主要是重音字符是什么意思
  • @HulaHula:只有拉丁字符?是否允许使用 ASCII 非字母字符:` ~ { # ] ...`(空格和数字除外)?

标签: html regex validation text input


【解决方案1】:

非空格和非数字非常简单 - ^[^\s0-9]+$。非重复条件可以通过负前瞻来实现^(?!.*(.)\1{3})

^(?!.*(.)\1{3})[^\s0-9]+$

演示:https://regex101.com/r/E02Hrh/3

请注意,除了非拉丁字母,它还允许使用特殊字符(?!@ 等),但问题中并未明确禁止这些字符。

【讨论】:

    【解决方案2】:

    对于非四重重复,就像 Dmitry 所说的那样。
    通过负前瞻很容易做到。 (?!.*(.)\1{3})

    对于特殊的 utf 字符,您可以添加一个 unicode 范围

    ^(?!.*(.)\1{3})[a-zA-Z\u00c0-\u00ff]+$
    

    或添加您期望的范围,例如来自supplement block

    ^(?!.*(.)\1{3})[a-zA-ZÀ-ÿ]+$
    

    html 输入和正则表达式模式验证示例

    <form action="javascript:console.log('ok')">
     letters: <input type="text" name="letters" 
    pattern="^(?!.*(.)\1{3})[a-zA-ZÀ-ÿ]+$" title="Letters">
    <input type="submit">
    </form> 

    【讨论】:

    • 无论出于何种原因投反对票的人。谢谢,现在我的声誉再次四舍五入到模数 10。
    • 为了更好地查看 unicode 表,我建议使用这个有用的站点:utf8-chartable.de
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2021-09-12
    • 1970-01-01
    • 2018-03-18
    相关资源
    最近更新 更多