Simple Regex Language 的 JavaScript 版本

2016-09-22 10:35:37 +08:00
 boom11235

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 断言等,如果有好办法请告诉我。

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

至于了解、理解、掌握,对于使用 SRL 语言的人更是遥不可及了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/308057

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX