-1

如何创建一个接受这个的正则表达式模式:

对于名称:

  1. 名字 = 只接受最少 4 个字母和最多 10 个字母,但一开始不接受空格,第二个名字或中间名首字母后面必须有空格
  2. 第二个名字 = 可选,但只接受字母表,最少 4 个,最多 10 个,中间首字母后面必须有空格
  3. 中间首字母 = 只有一个字母,后跟点(即“P.”)
  4. 姓氏 = 只接受最少 4 个字母和最多 10 个字母,但后面不接受空格

例子:

约翰·保罗·B·塞达
约翰·B·塞达

到目前为止,这是我的模式^[\S\s]{3,21}[A-z0-9]+$,我不知道该怎么做。

对于联系人:

模式是这样的:(+63)9##-####-###

  1. 强制性 (+63)9##-
  2. [0-9]-(字符只能是 4 后跟破折号(-))
  3. [0-9](字符应该只有 3 个)

例子:

(+63)955-5555-555

请帮我。我不知道该怎么做。

4

2 回答 2

3

姓名:

           ┌─ [ ] lowercase      { } 3 to 9 times  ─┐
           │                                        │
           │        ┌─ \x20 spacebar                │
         ┌─┴─┐     ┌┴─┐                           ┌─┴─┐
^(?:[A-Z][a-z]{3,9}\x20){1,2}[A-Z]\.\x20[A-Z][a-z]{3,9}$
│   └─┬─┘              │           │                   │
│     │                │           └─ \. period        │
│     │                │                               │
│     │                └─ (?: ) grouping               │
│     │                                                │
│     └─ [ ] uppercase letter        $ end of string ──┘
│
└─ ^ beginning of the string

电话号码:

   ┌── \+ plus sign (needs to be escaped by \)
   │
   │           ┌── - minus sign (does not have to be escaped by \)
   │           │
^\(\+63\)9\d{2}-\d{4}-\d{3}$
 │     │        │
 │     │        └─ \d digit
 │     │
 │     └─ \) right parenthesis
 │         
 └─ \( left parenthesis
于 2013-11-14T00:53:45.257 回答
0

您永远不应该使用正则表达式验证名称,因为名称不是正则的。当涉及到人名时,没有一种普遍遵循的单一模式。

电话号码要简单得多,它们需要遵循单一模式,并且电话号码可能无效。

一个满足您需求的简单正则表达式可能是:^\(\+63\)9\d{2}-\d{4}-\d{3}$.\

正则表达式可视化

模式只是匹配(+63)9+ 2 digits [0-9]+ -+ 4 digits [0-9]+ -+ 3 digits [0-9]

于 2013-11-14T00:45:27.980 回答