我正在尝试提取满足许多条件的令牌,我正在使用前瞻来实现以下两个条件:
- 标记必须是数字/字母数字(即,它们必须至少有一个数字)。它们可以包含一些特殊字符,例如 -
'-','/','\','.','_'
等,
我想匹配像这样的字符串:165271
,,,,agya678
yah@123
kj*12-
- 标记不能有连续的特殊字符,例如:
ajh12-&
我不想匹配像这样的字符串:ajh12-&
,671%&i^
我对第一个条件使用积极的前瞻:(?=\w*\d\w*)
对第二个条件使用消极的前瞻:(?!=[\_\.\:\;\-\\\/\@\+]{2})
我不确定如何结合这两个前瞻条件。
任何的意见都将会有帮助。提前致谢。
编辑 1:
我也想提取作为较大字符串一部分的完整标记(即,它们可能存在于字符串中间)。
我想匹配字符串中的所有标记:
165271 agya678 yah@123 kj*12-
并且字符串中没有任何标记(甚至不是标记的一部分):ajh12-& 671%&i^
为了强制正则表达式考虑整个字符串,我也在\b
上述正则表达式中使用了:(?=\b\w*\d\w*\b)
和(?!=\b[\_\.\:\;\-\\\/\@\+]{2}\b)