0

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

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

我想到了一些简单的翻译工具……用户可以在其中输入# 表示数字……X 表示字母等。但我知道有一天他们需要的不仅仅是字母和数字。

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

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

4

2 回答 2

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

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

    • 将每个替换#\d

    • 将每个替换^\^

    • 所有其他替换为,您要替换的字符[*]在哪里*

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

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

于 2012-11-06T15:29:54.710 回答
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('*', '.*')
}

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

于 2012-11-06T15:23:46.420 回答