限制正则​​表达式中的字符长度?

时间:2010-04-11 12:22:56

标签: regex

有没有办法用正则表达式将regular expression限制为100个字符?

\[size=(.*?)\](.*?)\[\/size]

所以Look at me!无效。

我想限制数字,只允许1到100之间的数字。

5 个答案:

答案 0 :(得分:25)

  

有没有办法用正则表达式将正则表达式限制为100个字符?

您的示例表明您希望从正则表达式中获取一个数字,然后使用此数字将最大长度放在正则表达式后面匹配的另一个部分上。这通常不可能一次通过。你最好的选择是有两个独立的正则表达式:

  • 一个匹配您想要使用的最大长度
  • 使用先前提取的值来验证其自己的匹配不超过指定长度的

如果您只想限制表达式匹配的字符数,则大多数正则表达式通过使用大括号来支持 bounds 。例如,

\d{3}-\d{3}-\d{4}

将匹配(美国)电话号码:正好是三位数,然后是连字符,然后是正好三位数,然后是另一个连字符,然后恰好是四位数。

同样,您可以设置上限或下限:

\d{5,10}

表示“至少5位,但不超过10位”。


更新: OP澄清说他正在尝试限制,而不是长度。我的新答案是不要使用正则表达式。提取值,然后将其与从size参数中提取的最大值进行比较。它不容易出错。

答案 1 :(得分:14)

如果要将有效输入限制为1到100之间的整数值,可以执行以下操作:

^([1-9]|[1-9][0-9]|100)$

<强>解释

  1. ^ =输入开始
  2. () =匹配的多个选项
  3. 第一个参数[1-9] - 匹配1到9之间的所有条目
  4. | = OR参数分隔符
  5. 第二个参数[1-9] [0-9] - 匹配10到99之间的条目
  6. 最后一个论点100 - 自解释 - 匹配条目100
  7. 不接受:  1.零 - 0  2.任何前面带有零的整数--01,021,001  3.任何大于100的整数

    希望这有帮助!

    盖孜

答案 2 :(得分:8)

如果您想要1到100之间的数字:

100|[1-9]\d?

答案 3 :(得分:1)

限制正则表达式中字符的长度吗? ^ [a-z] {6,15} $'

限制正则表达式中字符或数字的长度吗? ^ [a-z | 0-9] {6,15} $'

答案 4 :(得分:-1)

(^(\d{2})|^(\d{4})|^(\d{5}))$

此表达式采用长度2,4和5的数量。有效输入为 12 1234 12345