Php 字母数字字符的正则表达式

Php 字母数字字符的正则表达式,php,regex,Php,Regex,需要能够匹配如下字符串的正则表达式“1B7FL26X3WS731388”。字母数字长度为17个字符 我用的是这个表达 $rEX = '/([A-Z0-9]){17}/'; 但它也会从如下字符串中返回一部分“FGD798791B7FL26X3WS731388POPOD” 我需要选择一个长度正好为17个字符的字符串。第18个字符不应该是字母数字。$rEX='/[^a-Z0-9]([a-Z0-9]){17}[^a-Z0-9]/'应该可以[^…]否定字符类。将开始和结束添加到图案中: $rEX

需要能够匹配如下字符串的正则表达式
“1B7FL26X3WS731388”
。字母数字长度为17个字符

我用的是这个表达

$rEX    =  '/([A-Z0-9]){17}/';
但它也会从如下字符串中返回一部分
“FGD798791B7FL26X3WS731388POPOD”


我需要选择一个长度正好为17个字符的字符串。第18个字符不应该是字母数字。

$rEX='/[^a-Z0-9]([a-Z0-9]){17}[^a-Z0-9]/'应该可以
[^…]
否定字符类。

将开始和结束添加到图案中:

$rEX = '/^([A-Z0-9]){17}$/D';
这就行了

^([a-zA-Z0-9]){17}([^a-zA-Z0-9])*$

您应该使用^$分隔符

$rEX='/^([A-Z0-9]){17}$/'

仅允许大写字母数字长度为17的字符串

正则表达式将允许包含大写字母数字17长度字符串子字符串的所有字符串。

试试这个

<?php
$title='1B7FL26X3WS731388';
$result = preg_replace("/[^a-zA-Z0-9]/", "", $title);
echo strlen($result);
?>


正则表达式就是这样工作的。如果您需要它仅在第18个字符为非字母数字时匹配,您应该在表达式中指定它。感谢各位的回复我得到了我需要的$rEX='/([A-Z0-9]){17}([^A-Za-Z0-9]){1}/';它现在正在为methis工作,它将匹配“1234567890abcdefghijk”,并在第1组中返回“567890abcdefghijk”
<?php
$title='1B7FL26X3WS731388';
$result = preg_replace("/[^a-zA-Z0-9]/", "", $title);
echo strlen($result);
?>