V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
boom11235
V2EX  ›  分享创造

Simple Regex Language 的 JavaScript 版本

  •  
  •   boom11235 ·
    teabyii · 2016-09-22 10:35:37 +08:00 · 2094 次点击
    这是一个创建于 2983 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Simple Regex Language 是一个简单的正则表达式语言——使用 SQL 相似的语言来构建正则表达式,易读性要比我们正常使用正则好太多。

    之前发现这个开源库的时候比较感兴趣,中秋前后便抽空实现了一个 JavaScript 的版本:SRL-JavaScript

    使用 ES6 开发,基于 Node 6.0+,可以使用 webpack 和 babel 打包后在浏览器中使用。给个文档中的例子:

    const SRL = require('srl')
    const query = new SRL('letter exactly 3 times')
    const regex = query.get() // /[a-z]{3}/
    
    query.test('aaa') // true
    query.exec('aaa') // [ 'aaa', index: 0, input: 'aaa' ]
    

    更多语言规范请参考:Simple Regex

    不过由于 JS 正则引擎的缺陷,没法实现捕获分组命名和 lookahead 断言等,如果有好办法请告诉我。

    5 条回复    2016-09-25 09:19:40 +08:00
    Mcatt
        1
    Mcatt  
       2016-09-22 10:40:21 +08:00
    已 star 。
    doubleflower
        2
    doubleflower  
       2016-09-22 11:03:34 +08:00
    看了一下语法太松了,写一堆 SRL 还不如小小一段正则可读。
    bumz
        3
    bumz  
       2016-09-24 11:09:45 +08:00
    我觉得恰恰相反吧。。。看到正则表达式就能想到正则引擎的工作方式,精确而又准确,基本上都能一遍写对; SRL 的语法太自然语言,又长又复杂,还要人肉翻译回正则表达式才能清楚正则引擎都会做些什么。。。完全就是画蛇添足
    boom11235
        4
    boom11235  
    OP
       2016-09-24 11:43:12 +08:00
    @bumz 对于熟悉正则表达式的人来说,的确是直接用正则会更加舒服,但是对于对正则一直表示很难理解的人,这个可以帮助他们更快了解正则
    bumz
        5
    bumz  
       2016-09-25 09:19:40 +08:00
    @boom11235 我觉得并非如此
    无法理解正则是因为无法理解正则引擎,不能把自己变成人肉状态机
    至于换一种语法——那不会改变这些人理解不了正则引擎工作方式的事实,只能帮助他们凑乎使用正则罢了

    至于了解、理解、掌握,对于使用 SRL 语言的人更是遥不可及了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1177 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:17 · PVG 02:17 · LAX 10:17 · JFK 13:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.