3

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

有效名称:

  • 啊啊啊
  • aaa1
  • 所以
  • 约翰 P. 示例

无效的名字,

  • 1111
  • @@@@

到目前为止我尝试过的正则表达式

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

function validateFirstName(a) {
  if (/[0-9]/.test(a) && /[a-zA-Z]/.test(a)) {
      return false;
  } else {
      return true;
  }
}

但两者都不起作用。

任何人都可以在这方面提供帮助吗?

4

5 回答 5

5

尝试:

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

解释:

  • 中间方括号中的位(“三明治中的肉”)与字母字符匹配。后面的 + 确保至少有其中之一。
  • 其他两个方括号表达式(“三明治中的面包”)匹配字母数字字符。每个之后的 * 允许任意数量的这些。
  • 围绕整个内容的 ^ 和 $ 确保它是正在查看的整个文本,而不仅仅是它的一部分。
于 2013-02-08T13:24:36.563 回答
1

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

于 2013-02-08T13:19:20.253 回答
1

因此,您需要任意数量的 az char 或数字,然后至少需要一个 az char 和任意数量的 az char 或数字:

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

这应该可以正常工作。

于 2013-02-08T13:22:30.213 回答
1

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

/[a-z]/i.test(str)

如果字符串应仅由字母数字字符和至少一个字母字符组成:

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

或者

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

否则,[a-zA-Z0-9.'\-_\s]{1,20}实际上对我来说看起来不错,但是您必须将其锚定到字符串的开头和结尾:

/^[a-zA-Z0-9.'\-_\s]{1,20}$/.test(str)

如果您想强制使用字母字符,您必须包括前瞻或进行额外的测试,就像在前面的示例中一样。

于 2013-02-08T13:22:32.507 回答
0

我去了 Angular Docs 并找到了这个。也许这很简单,但可以满足我的需要

<input name="firstName" ngModel pattern="[a-zA-Z ]*">

https://angular.io/api/forms/PatternValidator#adding-a-pattern-validator

于 2021-12-23T09:21:45.060 回答