0

我对正则表达式不是很好,我在网上寻找这个但找不到。在我的数据库中,我存储了 first_name、second_name 和 last_name,但在我的网站上,我只有两个 texbox(一个用于 first_name,另一个用于 last_name)。我想包括一个检查以允许在同一个文本框中包含 first_name 和 second_name。所以检查应该是:

  • 只允许字母、撇号和空格
  • 如果带有 first_name 的文本框不包含空格,则最大长度为 50 个字符
  • 如果包含空格,则最大长度为 50 第一个单词 + 空格 +(其余 50 个,任意多个单词)

这可能使用正则表达式吗?谢谢,任何想法都会受到欢迎。

更新

我发现了另一种使用 JS 库https://github.com/joshfraser/JavaScript-Name-Parser的方法。我会做一些修改:

  • 检查解析名称的长度
  • 本地化诸如“博士”、“先生”之类的文本

然后我将名称单独存储在数据库中,因为这是一个简短的注册表单,我希望尽可能少的文本框。然后,如果数据有误,用户将能够转到他的个人资料并单独编辑数据。

4

2 回答 2

2

像这样的东西:

/^[A-Z']{1,50}(\s[A-Z'\s]{1,50})?$/i

(更新:请注意,虽然我相信上面的 JS 正则表达式符合您的要求,但我不确定您的要求是否与真实世界的名称匹配,因为您似乎假设第一个空格标志着名字的结尾。我有一些亚洲名字的朋友,他们的名字中有一个空格。我还有一个朋友用空格而不是连字符拼写她的名字“Ann Marie”;她还有一个中间名,在她的例子中是假设“玛丽”是中间名的一部分是不正确的。)

于 2012-10-24T04:11:56.517 回答
1

虽然我认为这在正则表达式中是可能的,但我认为在使用正则表达式之前将任务拆分一点更容易和更清晰。我建议您对空格字符执行拆分,然后检查生成的字符串长度,然后使用正则表达式确保只有字母和撇号。

于 2012-10-24T04:18:23.337 回答