我正在尝试编写正则表达式的一部分,它接受单词字符或数字,但不能同时接受(独占或)。
现在我有:
[\w\d]+
表示由数字或字母/下划线组成的单词。但是仍然可以让像5x和143243243243242323a这样的东西通过,因为从技术上讲它们是字母或数字。我尝试了[\w]+|[\d]+
之类的东西,但到目前为止它还没有对我有用。有什么帮助吗?
答案 0 :(得分:1)
此正则表达式与您描述的单词匹配:
/^(?:[a-z_]+|\d+)$/i
如果您不想匹配下划线,只需删除它:
/^(?:[a-z]+|\d+)$/i
答案 1 :(得分:0)
试试这种模式: ^(?:[a-zA-Z]+|\d+)$
您已与[\w]+|[\d]+
走在正确的轨道上。问题是锚点^
(在字符串的开头匹配)和$
(在字符串末尾匹配)缺失。他们确保在\w+
或\d+
之前或之后没有任何内容,从而确保单词 由单词字符或数字组成,但不是两者的混合(或任何其他人物)。此外,正如Gergo指出的那样,\w
也匹配数字。
如果您更清楚,上述模式也可以写成如下:
^[a-zA-Z]+$|^\d+$
答案 2 :(得分:0)
您可以使用[a-zA-Z_]+|[0-9]+
添加边界,例如字符串的开头和结束^[a-zA-Z_]+$|^[0-9]+$
如果您想分组,请将其用作([a-zA-Z_]+|[0-9]+)
对于非捕获组使用(?:[a-zA-Z_]+|[0-9]+)