V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
monkingame
V2EX  ›  JavaScript

请问 js 如何写首字符禁止为某条件的正则表达式?

  •  
  •   monkingame · 2019-09-06 13:55:55 +08:00 · 2792 次点击
    这是一个创建于 1687 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正则要求: 输入必须为字母 a-z,A-Z,及数字 0-9 ;但第一个字符不能为数字(但可以是字母)。 我知道可以这样写:/^[a-zA-Z][a-zA-Z0-9]+$/,但总觉得不够精简,想问一下是否存在类似&&操作符的正则写法?比如像这样:/^[a-zA-Z0-9 并且 ^0-9]+$/

    谢谢

    7 条回复    2019-09-06 14:28:02 +08:00
    AX5N
        1
    AX5N  
       2019-09-06 14:08:25 +08:00
    [^\d]windows
    monkingame
        2
    monkingame  
    OP
       2019-09-06 14:12:18 +08:00
    我查了一下,应该是用 x(?=y)和 x(?!y)的写法。

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp

    按照上面要求应该这样写:

    ^(?!\d)\w+$

    即:在满足第一个字符不能是数字的情况下,后面可以取 a-zA-Z0-9 字符
    hitaoguo
        3
    hitaoguo  
       2019-09-06 14:15:57 +08:00
    插眼。
    在我的认知里,感觉有点过于追求了。
    但也想看看怎么写。
    ipwx
        4
    ipwx  
       2019-09-06 14:19:43 +08:00 via Android
    但是显然朴素写法的性能应该至少不逊于零件断言,而且很可能更好
    dovme
        5
    dovme  
       2019-09-06 14:19:53 +08:00
    正则直接判断是不是数字加字母的组合,
    首字母判断直接截取第一个字符,判断是什么类型
    是不是很机智
    shintendo
        6
    shintendo  
       2019-09-06 14:22:18 +08:00
    我觉得你的第一个写法一目了然,没什么不精简的
    SilentDepth
        7
    SilentDepth  
       2019-09-06 14:28:02 +08:00   ❤️ 1
    ab:a 且 b (相当于 && 的作用)
    a|b:a 或 b

    用 i 开关可以省去 A-Z 的判断:/^(?!\d)[a-z]+$/i
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   943 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:06 · PVG 04:06 · LAX 13:06 · JFK 16:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.