我正在开发一个项目,其中有某些文本字段的格式规则。
用户可以编辑这些规则。目前,规则是正则表达式。用户认为正则表达式非常令人生畏,并希望以一种更简单、更用户友好的方式来编写它们。
我想到了一些简单的翻译工具……用户可以在其中输入# 表示数字……X 表示字母等。但我知道有一天他们需要的不仅仅是字母和数字。
我想知道是否存在简单的翻译工具,或者是否有更好的方法来做到这一点?
感谢您的阅读,欢迎所有建议和想法。
我正在开发一个项目,其中有某些文本字段的格式规则。
用户可以编辑这些规则。目前,规则是正则表达式。用户认为正则表达式非常令人生畏,并希望以一种更简单、更用户友好的方式来编写它们。
我想到了一些简单的翻译工具……用户可以在其中输入# 表示数字……X 表示字母等。但我知道有一天他们需要的不仅仅是字母和数字。
我想知道是否存在简单的翻译工具,或者是否有更好的方法来做到这一点?
感谢您的阅读,欢迎所有建议和想法。
将字符串拆分为单个字符并应用
将每个替换X
为[a-zA-Z]
将每个替换#
为\d
将每个替换^
为\^
所有其他替换为,您要替换的字符[*]
在哪里*
将所有模式加入一个最终的正则表达式模式
如果要将正则表达式模式应用于整个字符串,^
请在开头和$
结尾添加。
创建一个像你提议的工具应该是相当简单的。只需将占位符扩展为相应的正则表达式值:
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('*', '.*')
}
当然,这完全是一种用于演示解决方案的组合语言……如果您找到编译它的方法,我会最感兴趣。:)