帮助用户编写正则表达式

时间:2012-11-06 15:17:51

标签: regex

我正在开发一个项目,其中包含某些文本字段的格式规则。

用户可以编辑这些规则。目前,规则是正则表达式。用户认为正则表达式非常令人生畏,并希望用户更友好地编写它们。

我想到了一些简单的翻译工具......用户可以输入#作为数字...... X输入一个字母等等。但我知道,当他们需要的不仅仅是字母和数字时,这一天会到来。

我想知道是否存在一个简单的翻译工具,或者是否有更好的方法可以做到这一点?

感谢您阅读,欢迎提出所有建议和想法。

2 个答案:

答案 0 :(得分:1)

创建一个像你提议的工具应该相当简单。只需将占位符扩展为相应的正则表达式值:

var input= "XX##*"
var regex = input.replace('#', '[0-9]')
regex = regex.replace('X', '[a-zA-Z]')
regex = regex.replace('*', '.*')
# etc

当然,您必须定义占位符以及要为用户提供的任何其他选项。您还可以获得创意并允许超级用户通过/(或其他标识符)的周边输入直接输入正则表达式。

var input= '/\d\d\w\w.*/'
var regex = undefined;
if (input.matches('^/(.*)/$')) {
    regex = $1  (group 1 from regex)
} else {
  regex = input.replace('#', '[0-9]')
  regex = regex.replace('X', '[a-zA-Z]')
  regex = regex.replace('*', '.*')
}

当然,这完全是一种用于演示解决方案的补充语言......如果你找到了编译它的方法,我会最感兴趣的。 :)

答案 1 :(得分:1)

  1. 将字符串拆分为单个字符并应用

    • 将每个X替换为[a-zA-Z]

    • 将每个#替换为\d

    • 将每个^替换为\^

    • 所有其他人都替换为[*],其中*是您要替换的角色

  2. 将所有模式加入一个最终的正则表达式模式

  3. 如果要将正则表达式应用于整个字符串,请在开头添加^,在结尾添加$