我想为以下字符串创建一个正则表达式
abc.xy9.aBBB-hhh7.abcDD_XYz
那是,
- 第一个字符必须是小写字母
- 最后一个字符必须是小写字母/数字
- 介于两者
[A-Za-z0-9-_]
之间.
但输入字符串至少包含 3 个字符,最多 63 个字符。请检查以下表达式
^((\\.?([a-z]{1})([A-Za-z0-9_-]*)([a-z0-9]{1}))*){3,63}$
我想为以下字符串创建一个正则表达式
abc.xy9.aBBB-hhh7.abcDD_XYz
那是,
[A-Za-z0-9-_]
之间.
但输入字符串至少包含 3 个字符,最多 63 个字符。请检查以下表达式
^((\\.?([a-z]{1})([A-Za-z0-9_-]*)([a-z0-9]{1}))*){3,63}$
你已经给出了描述:
第一个字符是小写字母:[a-z]
最后一个是小写字母或数字:[a-z0-9]
中间:[A-Za-z0-9-_.]
至少 3 个字符,最多 63 表示 yu 必须重复中间的正则表达式 1 到 61 次。
一起:
[a-z][A-Za-z0-9_.-]{1,61}[a-z0-9]
但是:您需要与包含您的字符串的字母和数字不同的东西。没有它,这个正则表达式确实匹配,例如:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
这是因为正则表达式可以找到 63 个 'a's 并声称它是匹配的。
^(([a-z][A-Za-z0-9_-]+[a-z0-9]\.)+[A-Za-z0-9_-]*[a-z0-9]|[a-z][A-Za-z0-9_-]+[a-z0-9])$
如果匹配,则检查长度(例如,在 PHP 中检查 preg_match 返回 > 0,然后使用 strlen 检查总长度)。
我从您的示例中假设每个组都以小写字母或数字结尾,而不仅仅是整个字符串的结尾
不完全的。看,{3,63}
最后将应用于整个正则表达式 - 它将应用整个正则表达式 63 次。相反,试着把它放在你的内在角色类上。另外,我不认为你在开始时想要一个句号,你想要在你的角色类中,说{1}
是多余的。
^((([a-z])([A-Za-z0-9_-.]{1,61})([a-z0-9])))$