我正在尝试构建一些正则表达式,可以检测到有人试图用点“填写”他们的用户名。
还有一些其他要求:
e.g:
我正在构建正则表达式的方式是,如果匹配,它将拒绝允许的用户名。
到目前为止我所拥有的是:
/[^a-z0-9.]|^\.|\.$|\.{2,}|\S{31,}|^\S{0,5}$/i
这抓住了:
我已经尝试了几种不同的方法来完成最后一次检查,但是他们都打破了整个检查,包括允许的(a.b.c.d.e.6)或者只是没有工作。
我最接近的是:
(\.{1}[a-z0-9]{1,}){1,3}\S{1,}$
问题在于它也捕获了123.456(应该允许/不捕获)
它应该捕获的字符串的其他示例:
我正在尝试使用正则表达式,而不必使用JS预先格式化它。
答案 0 :(得分:0)
好的,经过多次实验,我确实找到了答案。事实证明,找到不允许的字符串实际上更容易(对我来说无论如何):
/^(\w\.?){4}\w$/
相同的表达式扩展:
/^\w\.?\w\.?\w\.?\w\.?\w$/
这将捕获任何仅填充5个或更少字符并散布点的内容。
我正在使用的完整正则表达式也抓住了:
列表中的新来者:任何包含8个或更多数字而没有任何alpha的字符串。
/^(\w\.?){4}\w$|^\w{0,5}$|\w{31,}|[^a-z0-9.]|^\.|\.$|\.{2,}|\d{8,}/i
我已经使用regex101上可以想到的所有可能组合对此进行了测试:https://regex101.com/r/xI7wZ3/1 它的工作原理! (耶)