search

Home  >  Q&A  >  body text

javascript - 如何匹配一个 不以xf 开始的 字母和数字 混合的 字符串?

如何匹配一个 不以xf 开始的 字母和数字 混合的 字符串
^((?!xf).)*$ 匹配不以xf开始的

(^([a-z])+([a-z0-9])+$)|() 匹配 不能全为数字的

合起来,匹配就出现问题呢?

巴扎黑巴扎黑2904 days ago598

reply all(3)I'll reply

  • 迷茫

    迷茫2017-04-10 15:12:14

    不以XX开头,你需要的是零宽度负回顾后发断言

    (?<!xf)
    

    字母和数字混合,这个就比较常规了

    [a-zA-Z0-9]+
    

    合在一起应该就是你想要的

    (?<!xf)[a-zA-Z0-9]+
    

    但是分割线

    JavaScript不支持这种高级货(我也是才知道),所以只能这样

    !/^xf/.test(str) && /[a-zA-Z0-9]+/.test(str)
    

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 15:12:14

    /^(?!xf)[a-z0-9]+/.test(args)
    

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:12:14

    不知道这个正则怎么样: // 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);
    }
    

    有用请支持哦

    reply
    0
  • Cancelreply