正则表达式限制几种情况

时间:2017-05-16 10:17:35

标签: html regex validation text input

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

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

注意:必须允许重音大部分字符(ç,á,ê等...)

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

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

如果你能告诉我这个在html输入上实现的话就会很棒。

2 个答案:

答案 0 :(得分:0)

非空格和非数字非常简单 - ^[^\s0-9]+$。可以使用否定先行^(?!.*(.)\1{3})实现非重复条件:

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

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

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

答案 1 :(得分:0)

对于非四重奏,就像德米特里所说的那样 通过负向前瞻很容易做到。 (?!.*(.)\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>