如何匹配一个 不以xf 开始的 字母和数字 混合的 字符串
^((?!xf).)*$ 匹配不以xf开始的
(^([a-z])+([a-z0-9])+$)|() 匹配 不能全为数字的
合起来,匹配就出现问题呢?
如何匹配一个 不以xf 开始的 字母和数字 混合的 字符串
^((?!xf).)*$ 匹配不以xf开始的
(^([a-z])+([a-z0-9])+$)|() 匹配 不能全为数字的
合起来,匹配就出现问题呢?
不以XX开头,你需要的是零宽度负回顾后发断言
(?<!xf)
字母和数字混合,这个就比较常规了
[a-zA-Z0-9]+
合在一起应该就是你想要的
(?<!xf)[a-zA-Z0-9]+
但是分割线
JavaScript不支持这种高级货(我也是才知道),所以只能这样
!/^xf/.test(str) && /[a-zA-Z0-9]+/.test(str)
不知道这个正则怎么样: // Update: 添加 x? 以匹配chuan "x"
(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^x?$)
一些测试:
/(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^x?$)/.test("") // true
/(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^x?$)/.test("hello") // true
/(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^x?$)/.test("x") // true
/(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^x?$)/.test(" ") // false
/(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^x?$)/.test("233") // false
/(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^x?$)/.test("xf1s2") // false
/(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^x?$)/.test("xg122") // true
/(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^x?$)/.test("cf122") // true
解释如下:(^[a-wy-z][a-z0-9]+$)
表示首字符为小写字母,且不是 x(^x[a-eg-z0-9][a-z0-9]+$)
表示首字母为 x 且次位不是 f(^$)
匹配空串。 (^x?$)
匹配空串或者串 "x"
如果需要忽略大小写,可以使用 /(^[a-wy-z][a-z0-9]+$)|(^x[a-eg-z0-9][a-z0-9]+$)|(^$)/i
其实你也可以
function isWanted (str) {
return /^((?!xf).)*$/.test(str) && /(^([a-z])+([a-z0-9])+$)|(^$)/.test(str);
}
有用请支持哦
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决