只选择字母数字。正则表达式。 PHP

时间:2010-01-14 18:34:06

标签: php regex

我正在尝试找到正则表达式,只查找字符串中的字母数字单词,即字母或数字组合的单词。如果一个单词是纯数字或纯字符,我需要丢弃它。

5 个答案:

答案 0 :(得分:6)

试试这个正则表达式:

\b([a-z]+[0-9]+[a-z0-9]*|[0-9]+[a-z]+[a-z0-9]*)\b

或更紧凑:

\b([a-z]+[0-9]+|[0-9]+[a-z]+)[a-z0-9]*\b

这匹配所有单词(请注意单词边界\b),这些单词以一个或多个字母开头,后跟一个或多个数字,反之亦然,后跟一个或多个字母或数字。所以总是满足至少一个字母和至少一个数字的条件。

答案 1 :(得分:3)

前瞻:

'/\b(?![0-9]+\b)(?![a-z]+\b)[0-9a-z]+\b/i'

快速测试也显示了示例用法:

$str = 'foo bar F0O 8ar';
$arr = array();
preg_match_all('/\b(?![0-9]+\b)(?![a-z]+\b)[0-9a-z]+\b/i', $str, $arr);
print_r($arr);

输出:

F0O
8ar

答案 2 :(得分:0)

这将返回您可以循环的所有单个字母数字单词。我不认为正则表达式可以自己完成整个工作。

\b[a-z0-9]+\b

确保将其标记为不区分大小写。

答案 3 :(得分:0)

\b(?:[a-z]+[0-9]+|[0-9]+[a-z]+)[[:alnum:]]*\b

答案 4 :(得分:0)

'\b([a-zA-Z]+[0-9]+ | [0-9]+[a-zA-Z]+ | [a-zA-Z]+[0-9] +[a-zA-Z]*)\b'