我想在字符串中找到所有字母数字的单词。我能够得到所有这些的匹配。但与此同时,我还有其他一些词也与这些不是字母数字的词匹配。
ABC123 123ABC 1abcabc1 11abc22dcf abcabc22
答案 0 :(得分:2)
试试这个 -
(?:[0-9][^ ]*[A-Za-z][^ ]*)|(?:[A-Za-z][^ ]*[0-9][^ ]*)
解释 -
纯字母数字字符至少包含一个字母和数字实例。因此,如果你单词的第一个字母是字母,那么在单词的其余部分,必须至少有一个数字。对于其他方面也是如此。
正则表达式包含2个部分,由" |"(正则表达式相当于OR)分隔
第1部分 - > [0-9][^ ]*[A-Za-z][^ ]*
检查单词的第一个字符是否为数字([0-9]),然后在单词的其余部分,尝试查找字母表([A-Za-z]) 。
第2部分 - > [A-Za-z][^ ]*[0-9][^ ]*
这与第1部分相同,但数字和字母会改变位置。检查第一个字母,如果它是一个字母,那么该单词的其余部分必须有一个数字。
正则表达式here的更详细解释
演示Here
答案 1 :(得分:1)
你可能会尝试类似的事情:
[a-zA-Z0-9]+
何时应该使用:
(?=\S*[0-9])(?=\S*[a-zA-Z])[a-zA-Z0-9]+
后者断言匹配包含数字和字母,确保它实际上是字母数字匹配。这适用于整个字符串,以查找每个字母数字“单词”。