如何写一个正则表达式来验证PHP中的中间名。因为有些人有不止一个中间名首字母,正则表达式应该允许在一个和三个中间名首字母之间。正则表达式应该允许一个字母带或不带句点,两个或三个字母后面各带一个句点,或者两个或三个字母后面各带一个句点和一个空格。
以下是允许的字符串列表,其中“A”表示任何大写或小写字母,包括外国字母表中的unicode字母:
'A', 'A.', 'A.A.', 'A. A.', 'A.A.A.', 'A. A. A.'
字符串
下面是我编写的一个正则表达式,它可以作为起点来验证英文字母表中的一个midlle首字母,后面跟着一个可选的句号。
$pattern = "/^([a-zA-Z]{1}[\.]{0,1})?$/";
preg_match_all($pattern, $input_string, $match) > 0;
型
2条答案
按热度按时间ukxgm1gy1#
好了,我们将在整个字符串中有两种匹配。
A. A. A.
模式,其中每个字符后面都有一个.
。A A A
模式,其中每个字符后面都有空格,而不是句点字符。经您确认,根据您的要求,
A. A A.
不是有效模式。所以,我们不会关注它。就regex而言,它将如下所示,
\p{L}\.\s*
匹配A. A. A.
模式。\p{L}
用于匹配单个Unicode代码点。\p{L}\s*
匹配A A A
模式。总的来说,正则表达式将是
/^((\p{L}\.\s*)+|(\p{L}\s*)+)$/iu
。|
用于指示替代匹配。因此,它可能是第一个捕获组或第二个。u
标志用于将主题字符串和模式视为UTF-8。(see more info
)片段:
字符串
Live Demo
为了只匹配
1
或2
或3
首字母的长度,我们可以将+
量词更改为{1,3}
以匹配编号。在1 - 3的范围内的首字母。型
Live Demo的
h4cxqtbf2#
我想这在很大程度上取决于您定义的有效名称。EG?
字符串
结果将是:
型