我正在尝试找到正则表达式,只查找字符串中的字母数字单词,即字母或数字组合的单词。如果一个单词是纯数字或纯字符,我需要丢弃它。
答案 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'