Regex 正则表达式异或
我正在尝试编写一段正则表达式,其中它可以接受单词字符或数字,但不能同时接受这两个字符(异或) 现在我有:Regex 正则表达式异或,regex,Regex,我正在尝试编写一段正则表达式,其中它可以接受单词字符或数字,但不能同时接受这两个字符(异或) 现在我有: [\w\d]+ 表示由数字或字母/下划线组成的单词。但这仍然允许像5x和14342323a这样的东西通过,因为从技术上讲,它们是字母或数字。我尝试过像[\w]+|[\d]+这样的方法,但到目前为止还没有奏效。有什么帮助吗?试试这个模式:^(?[a-zA-Z]+\d+$ 您使用[\w]+\d]+已经走上了正确的轨道。问题是缺少锚定^(在字符串开头匹配)和$(在字符串末尾匹配)。它们确保在\
[\w\d]+
表示由数字或字母/下划线组成的单词。但这仍然允许像5x和14342323a这样的东西通过,因为从技术上讲,它们是字母或数字。我尝试过像
[\w]+|[\d]+
这样的方法,但到目前为止还没有奏效。有什么帮助吗?试试这个模式:^(?[a-zA-Z]+\d+$
您使用
[\w]+\d]+
已经走上了正确的轨道。问题是缺少锚定^
(在字符串开头匹配)和$
(在字符串末尾匹配)。它们确保在\w+
或\d+
之前或之后没有任何内容,从而确保单词仅由单词字符或数字组成,而不是两者(或任何其他字符)的混合。此外,正如Gergo指出的,\w
也匹配数字
如果您更清楚的话,上述模式也可以写为:
^[a-zA-Z]+$|^\d+$
您可以使用
[a-zA-Z|]+[0-9]+
添加边界,如字符串的开头和结尾^[a-zA-Z]+$|^[0-9]+$
如果要分组,请将其用作([a-zA-Z]+[0-9]+)
对于非捕获组,请使用
(?:[a-zA-Z|]+[0-9]+)
此正则表达式与您描述的单词匹配:
/^(?:[a-z_]+|\d+)$/i
如果不想匹配下划线,只需将其删除:
/^(?:[a-z]+|\d+)$/i
@格戈多西:当然,我很愚蠢。谢谢你指出这一点!什么是适合您的
单词字符
?