我在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之间的输入)。
答案 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
,请分割字符串。