Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中用户名的Regex是一个名称,而不是用户名_Javascript_Regex - Fatal编程技术网

Javascript中用户名的Regex是一个名称,而不是用户名

Javascript中用户名的Regex是一个名称,而不是用户名,javascript,regex,Javascript,Regex,我已经尝试了一段时间,但失败了,正则表达式不太好,我需要的是以下内容: 用户名(不是用户名的人的姓名) 它可以包括-因为某些名称中有连字符(最多允许2个) 它可以包括一个空间(最多3个) 它不能包含数字,并且必须以字母而不是连字符开头 它必须至少3个字符,最多30个字符 它必须适应非英语字母的人(例如Agnès) 我试过了,但失败了,它允许以数字开头,但没有成功 接受像è或ï这样的非英语字母 ^[a-zA-Z\-]{3,30}$ 非常感谢您的帮助,我认为这将帮助许多程序员进行搜索,因此我认为这

我已经尝试了一段时间,但失败了,正则表达式不太好,我需要的是以下内容:

用户名(不是用户名的人的姓名)

它可以包括-因为某些名称中有连字符(最多允许2个)

它可以包括一个空间(最多3个)

它不能包含数字,并且必须以字母而不是连字符开头

它必须至少3个字符,最多30个字符

它必须适应非英语字母的人(例如Agnès)

我试过了,但失败了,它允许以数字开头,但没有成功 接受像è或ï这样的非英语字母

^[a-zA-Z\-]{3,30}$

非常感谢您的帮助,我认为这将帮助许多程序员进行搜索,因此我认为这可能是答案:

/**检查名称是否有效。
*@param{String}name
*@returns{Boolean}
*/
const validateName=(名称)=>{
name=name.trim().replace(/\s+/,“”)
如果(name.length>30 | | name.length<3)返回false//长度太长或太短
if((name.match(/-/g)| |[]).length>2)返回false//找到2个以上的“-”
if((name.match(/\s+//g)| |[]).length>3)返回false//找到3个以上的“空白链”
if(name.match(/[~`!@$%^&*()u=+\d[\]{}\\\\\\\\:;“,.\/?]/)返回false//not alowed char found
name=name.split(/\s+/g)
用于(名称的一部分)
如果(部分[0]=='-')返回false//名称的部分以开头-
返回真值
}
log(`Agnès Jaszenko:${validateName(“Agnès Jaszenko”)}`)//有效
console.log(`Ag:${validateName(“Ag”)}`)//太短
log(`Aga ta roko la foo:${validateName(“Aga ta roko la foo”)}`)//太多-
console.log(`Agata Jolanta Krzyżtofska Brzęczyszczewiczykówna:${validateName(“Agata Jolanta Krzyżtofska Brzęczyszczewiczykówna”)//to long
log(`Pan Janusz Kocioł:${validateName(“Pan Janusz Kocioł”)}`)//有效
log(`maciejkozieja:${validateName(“maciejkozieja”)}`)//fancy:3hah:P-valid
log(`arjusz Miętocha:${validateName(`arjusz Miętocha')}`)//以开头-
console.log(`arjusz@Miętocha:${validateName(“Łarjusz@Miętocha”)}`)//不允许使用字符
console.log(`محمدد:${validateName(“محمممد”)}`//使用阿拉伯语符号有效

console.log('1605;ح1مد)${validateName(“مح1مد”)//找到无效字符
不要使用
[a-zA-Z-]
\D
(或等效的
[^0-9]
)这是一个最好不用regex解决的任务。您需要使用或构建自定义Unicode字母类。使用XRegExp可以构建类似的模式。