我想检查用户名是否只有拉丁或西里尔字母和空格(既没有数字也没有特殊字符)。很明显,所以我写了一个非常简单的正则表达式:/^[a-zA-Zа-яА-Я\s]+$/
,可以完成工作。但是最近我读到了一些技巧,例如添加\n
来欺骗验证。
所以我切换到:/\A[a-zA-Zа-яА-Я\s]+\z/
似乎很安全,但是现在所有测试都返回false
。
我正在使用JavaScript进行检查,我的功能是:
stringFormat.test(login)
Mozilla控制台的输出(以节省您的时间):
stringFormat = /\A[a-zA-Zа-яА-Я\s]+\z/
/\A[a-zA-Zа-яА-Я\s]+\z/
validateString(login, stringFormat)
false
login = "ol"
"ol"
validateString(login, stringFormat)
false
validateString(login, stringFormat)
false
stringFormat = /^[a-zA-Zа-яА-Я\s]+$/
/^[a-zA-Zа-яА-Я\s]+$/
validateString(login, stringFormat)
true
login = "ol345"
"ol345"
validateString(login, stringFormat)
false
validateString("hello", stringFormat)
true
stringFormat = /\A[a-zA-Zа-яА-Я\s]+\z/
/\A[a-zA-Zа-яА-Я\s]+\z/
validateString("hello", stringFormat)
false
stringFormat = /[a-zA-Zа-яА-Я\s]+/
/[a-zA-Zа-яА-Я\s]+/
validateString("hello", stringFormat)
true
login = "ol345"
"ol345"
validateString(login, stringFormat)
true
login = "345"
"345"
validateString(login, stringFormat)
false
stringFormat = /[a-zA-Zа-яА-Я\s]+\z/
/[a-zA-Zа-яА-Я\s]+\z/
login = "ol345"
"ol345"
validateString(login, stringFormat)
false
validateString("hello", stringFormat)
false
stringFormat = /[\Aa-zA-Zа-яА-Я\s\z]+/
/[\Aa-zA-Zа-яА-Я\s\z]+/
validateString("hello", stringFormat)
true
validateString(login, stringFormat)
true
stringFormat = /\A[a-z]{5}\z/
/\A[a-z]{5}\z/
validateString("hello", stringFormat)
false
validateString("heo", stringFormat)
false
可以帮我吗?
答案 0 :(得分:2)
显然\A
和\z
在JavaScript中不受支持。
请看以下简单示例:
我建议您使用^[a-zA-Zа-яА-Я\s]+$,
已有的模式并关闭多行模式,这样可以防止^
和$
匹配行的开头和结尾。