1-我打算使用regEx来验证使用此正则表达式的用户名和姓名输入:
/^[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-]+$/u
但是我不想允许下划线“_”,不只是空格(不能留空)和至少2个字符。我怎样才能将它们应用到上面的regEx?
2-对于我的强密码输入验证,我需要它至少8个字符长度 它应该包含至少一个字母和非字母(例如qsgtest123,qsgtest!@#)
如果你能帮我解决这2个regEx,我将不胜感激。
答案 0 :(得分:1)
这是名称
/^(?! +$)[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-]{2,}$/u
唯一的区别是末尾的“至少2个字符”和(?! +$)
意味着“如果只有空格和字符串的结尾则会失败”。
测试员:http://gskinner.com/RegExr/?2uv74
这个用于密码:
/^(?=.*[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð])(?=.*[^a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð]).{8,}$/u
(我正在使用你对“信”的定义:-))。这意味着:
look forward if present any character any number of times followed by a "letter"
look forward if present any character any number of times followed by a "non-letter"
(these two look forward don't "move" the regex cursor, that is still at the first character)
match any character 8 or more times
我发现你正在使用正则表达式末尾的/u
。你可能正在使用Perl。要匹配任何字母,您应使用\p{L}
(并匹配任何非字母,您应使用\P{L}
),而不是写长字符列表。所以第一个会成为:
/^(?! +$)[\p{L} ,.'-]{2,}$/u
和密码一:
/^(?=.*\p{L})(?=.*\P{L}).{8,}$/u
我们将忽略Unicode的可组合变音符号: - )
除非你更愿意加入它们......然后
/^(?! +$)(?=.{2,})(\p{L}\p{M}*|[ ,.'-])*$/u
(我们预先检查所有空格和最小长度的缺失,然后我们检查所有字符串是否由字母组成(每个字母都带有可选的零或多个组合标记)或{}中的其他符号{1}})
答案 1 :(得分:1)
尝试使用:
/^[\p{L},.'-]+[\p{L} ,.'-]*[\p{L},.'-]+$/u
答案 2 :(得分:1)
/^((?!_)[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-])+$/u
以上内容适用于您的第一个问题。