Php 在字符串中匹配8位字母数字

Php 在字符串中匹配8位字母数字,php,regex,php-5.3,Php,Regex,Php 5.3,我想使用正则表达式来检查字符串是否包含包含8位字母数字字符的单词,忽略大小写(意味着2HJS1289和2HJS1289应该匹配)。我知道我可以使用preg来实现这一点,到目前为止,我已经做到了: preg_match('/[A-Za-z0-9]/i', $string) 但是,我不确定如何将其限制为8位/字符方案 试试看 preg_match('/\b([A-Z0-9]{8})\b/i', $string) {8}正好匹配8次。我添加了捕获组(括号),以防需要提取实际匹配 您还可以使用{mi

我想使用正则表达式来检查字符串是否包含包含8位字母数字字符的单词,忽略大小写(意味着2HJS1289和2HJS1289应该匹配)。我知道我可以使用preg来实现这一点,到目前为止,我已经做到了:

preg_match('/[A-Za-z0-9]/i', $string)
但是,我不确定如何将其限制为8位/字符方案

试试看

preg_match('/\b([A-Z0-9]{8})\b/i', $string)
{8}正好匹配8次。我添加了捕获组(括号),以防需要提取实际匹配

您还可以使用{min,max}来匹配在min和max时间之间重复的模式(我认为包括min和max)。或者,您可以将其中一个参数保留为开放式。例如{min,}要匹配至少min次,请尝试

preg_match('/\b([A-Z0-9]{8})\b/i', $string)
{8}正好匹配8次。我添加了捕获组(括号),以防需要提取实际匹配


您还可以使用{min,max}来匹配在min和max时间之间重复的模式(我认为包括min和max)。或者,您可以将其中一个参数保留为开放式。例如{min,}至少匹配min次

[a-zA-Z0-9]-将匹配大写或小写字母或数字

{8} -将指定与前面令牌的8个匹配

把它放在一起:

 preg_match('/([A-Za-z0-9]{8})/i', $string)

[a-zA-Z0-9]-将匹配大写或小写字母或数字

{8} -将指定与前面令牌的8个匹配

把它放在一起:

 preg_match('/([A-Za-z0-9]{8})/i', $string)

对于8个字符的单词,您需要使用单词边界:
\b

preg_match('/\b[A-Z\d]{8}\b/i', $string)

对于8个字符的单词,您需要使用单词边界:
\b

preg_match('/\b[A-Z\d]{8}\b/i', $string)

preg_匹配('/[A-Za-z0-9]{8}/',$string)
用于8个字符的alphanum字符串。如果要匹配4到8个字符,可以将
{8}
更改为
{4,8}
preg_match('/[A-Za-z0-9]{8}/',$string)
用于8个字符的alphanum字符串。如果要匹配4到8个字符,可以将
{8}
更改为
{4,8}
。因为使用
[a-zA-z]
,所以不需要尾随“i”。因为使用
[a-zA-z]
,所以不需要尾随“i”。例如,这将匹配一个9个字符的单词。对于精确的8,单词边界是必需的。@pguardiario:单词边界不是一个好主意,因为像
abc456gh\uc4
这样的字符串将不匹配。精确匹配8个字母数字字符的唯一方法似乎是使用lookarounds:
(?和
(?![A-Za-z0-9])
No,该字符串无论如何都不应该匹配。@pguardiario:测试它。如果没有单词边界或锚,这个正则表达式将匹配任何包含8个字符的字母数字字符串的输入字符串。例如,它将匹配一个9个字符的单词。对于正好8个字符,需要单词边界。@pguardiario:单词边界是个坏主意,因为像
abc456gh_
将不匹配。精确匹配8个字母数字字符的唯一方法似乎是使用lookarounds:
(?和
(?![A-Za-z0-9])
不,该字符串无论如何都不应该匹配。@pguardiario:测试它。如果没有单词边界或锚,该正则表达式将匹配任何包含8个字符字母数字字符串的输入字符串。