如何匹配一个 不以xf 开始的 字母和数字 混合的 字符串?
如何匹配一个 不以xf 开始的 字母和数字 混合的 字符串
^((?!xf).)*$ 匹配不以xf开始的
(^([a-z])+([a-z0-9])+$)|() 匹配 不能全为数字的
合起来,匹配就出现问题呢?
虐灯狂人爱迪生
10 years, 4 months ago
Answers
不以XX开头 ,你需要的是 零宽度负回顾后发断言
(?<!xf)
字母和数字混合 ,这个就比较常规了
[a-zA-Z0-9]+
合在一起应该就是你想要的
(?<!xf)[a-zA-Z0-9]+
但是分割线
JavaScript不支持这种高级货(我也是才知道),所以只能这样
!/^xf/.test(str) && /[a-zA-Z0-9]+/.test(str)
死魚量產型
answered 10 years, 4 months ago
不知道这个正则怎么样: // 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);
}
有用请支持哦
桃子味气球
answered 10 years, 4 months ago