Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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/17.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 用于名称验证的正则表达式,至少有一个alpahbet(A-z)_Javascript_Regex - Fatal编程技术网

Javascript 用于名称验证的正则表达式,至少有一个alpahbet(A-z)

Javascript 用于名称验证的正则表达式,至少有一个alpahbet(A-z),javascript,regex,Javascript,Regex,我需要一个正则表达式来验证它应该至少包含一个字母表(a-Z,a-Z)和可选的数字(0-9) 有效名称: aaaa aaaa1 所以 约翰·P·例子 无效名称 1111 @@@@ 到目前为止我试过的正则表达式 [a-zA-Z0-9\.\'\-_\s]{1,20} 及 但两者都不起作用 在这方面,有人能帮忙吗?[a-zA-Z]+.*.[a-zA-Z]+.*.[a-zA-Z]+.*匹配您提供的示例。所以您想要任意数量的a-Z字符或数字,然后至少一个a-Z字符和任意数量的a-Z字符或数字:

我需要一个正则表达式来验证它应该至少包含一个字母表(a-Z,a-Z)和可选的数字(0-9)

有效名称:

  • aaaa
  • aaaa1
  • 所以
  • 约翰·P·例子
无效名称

  • 1111
  • @@@@
到目前为止我试过的正则表达式

[a-zA-Z0-9\.\'\-_\s]{1,20}  

但两者都不起作用


在这方面,有人能帮忙吗?

[a-zA-Z]+.*.[a-zA-Z]+.*.[a-zA-Z]+.*
匹配您提供的示例。

所以您想要任意数量的a-Z字符或数字,然后至少一个a-Z字符和任意数量的a-Z字符或数字:

^[a-zA-Z0-9]*[a-zA-Z]+[a-zA-Z0-9]*$

这应该可以正常工作。

如果您只想检查字符串是否包含字母字符,只需执行以下操作:

/[a-z]/i.test(str)
如果字符串仅由字母数字字符和至少一个字母字符组成:

/^(?=.*[a-z])[a-z\d]+$/i.test(str)

否则,
[a-zA-Z0-9.\-\s]{1,20}
实际上对我来说很好,但你必须将它锚定到字符串的开头和结尾:

/^[a-zA-Z0-9.'\-_\s]{1,20}$/.test(str)
如果要强制使用字母字符,则必须包括先行项或进行额外的测试,就像前面的示例一样。

尝试:

^[a-zA-Z0-9]*[a-zA-Z]+[a-zA-Z0-9]*$
解释:

    在中间方括号中的“位”(“三明治中的肉”)与字母字符匹配。+在它之后确保至少有一个
  • 另外两个方括号内的表达式(“三明治中的面包”)与字母数字字符匹配。每个后面的*允许任意数量的这些
  • 围绕整个内容的“^”和“$”确保它是整个文本,而不仅仅是其中的一部分

“不起作用”的确切含义是什么?不是所有应该匹配的都匹配吗?它甚至匹配它不应该匹配的东西?你有语法错误吗?您得到运行时错误吗?嗯,<代码> /[0 9] /测试(“AAAA”)< /代码>显然导致错误。请不要认为可以像这样验证第一个名字。名字是一个非常复杂的奇怪的世界,你的要求只会减少数百万人输入自己的名字。你说1111是无效的,它与之不匹配。对于aaaa来说,这对我来说是匹配的。你用什么来评估模式?(regexpal.com和GNU grep似乎很喜欢它)但是名称中的空格呢?OP的函数名为
validateFirstName
。这使我认为它将假定它只应用于第一个名字(例如“John P.示例”中的John)。
/[a-z]/i.test(str) && /^[a-z\d]+$/i.test(str)
/^[a-zA-Z0-9.'\-_\s]{1,20}$/.test(str)