如何将长度条件应用于现有的正则表达式

时间:2019-01-16 15:48:44

标签: javascript regex validation

我在Javascript中有一个l = sorted(l, key=lambda l: l['name']) print(l) # [{'name': 'a', 'val': 10}, # {'name': 'aa', 'val': 10}, # {'name': 'b', 'val': 10}, # {'name': 'c', 'val': 9}] 正则表达式,现在我想限制/测试输入字符串的长度,范围为2到30个字符。对于上述正则表达式,如何在我的情况下对现有的正则表达式强制执行/添加/^[0-9a-zA-Z]+[ ]*[0-9a-zA-Z]*$/(根据我的基本知识,它检查长度在2到30之间的输入)。

4 个答案:

答案 0 :(得分:0)

不确定,但..

angular/material 5.2.4 -> angular/material 7.2.0

??

答案 1 :(得分:0)

我不确定我是否理解您的问题,但是仅使用^[0-9a-zA-Z]{2,30}$有什么问题?

您可以使用先行查询来确定长度。

例如将(?!.{31,})添加到^之后的正则表达式的开头,这是一个负向查找,表示如果有31个或更多的任何字符,则表示不匹配。但是对于这种情况,这不是必需的。例如,我将在密码验证中使用类似的内容。例如(?=.{8,})断言它必须至少包含8个字符。

答案 2 :(得分:0)

您可以使用正向前行(?=.{2,30}$)来检查字符数,并且必须对中间字符类中的字符类使用量词+,并添加匹配范围。

如果可以有多个空格:

^(?=.{2,30}$)[0-9a-zA-Z][0-9a-zA-Z ]*[0-9a-zA-Z]$

这将匹配

  • ^开始
  • (?=.{2,30}$)前瞻性声明2-30个字符
  • [0-9a-zA-Z]匹配char类之一
  • [0-9a-zA-Z ]*匹配0+次任何char类,包括一个空格
  • [0-9a-zA-Z]匹配char类之一
  • $结束

修改

无需提前查询,也可以写为

^[A-Za-z0-9][A-Za-z0-9 ]{0,28}[A-Za-z0-9]$

答案 3 :(得分:0)

Avinash, 您需要限制正则表达式仅捕获前30个字符。正则表达式可以如下。

正则表达式:
[\w\s]{2,30}在这里\ w与[A-Za-z0-9_]匹配。

示例: https://regex101.com/r/mN825k/1

如果您不想包含_,则可以改用此正则表达式。
正则表达式: [A-z0-9\s]{2,30}

示例: https://regex101.com/r/mN825k/2

这两种情况也都包含空格。如果您不希望空格成为字符串的一部分,并在空格后从正则表达式中删除\s,请分割字符串。