我正在开发一个项目,其中包含某些文本字段的格式规则。
用户可以编辑这些规则。目前,规则是正则表达式。用户认为正则表达式非常令人生畏,并希望用户更友好地编写它们。
我想到了一些简单的翻译工具......用户可以输入#作为数字...... X输入一个字母等等。但我知道,当他们需要的不仅仅是字母和数字时,这一天会到来。
我想知道是否存在一个简单的翻译工具,或者是否有更好的方法可以做到这一点?
感谢您阅读,欢迎提出所有建议和想法。
答案 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)
将字符串拆分为单个字符并应用
将每个X
替换为[a-zA-Z]
将每个#
替换为\d
将每个^
替换为\^
所有其他人都替换为[*]
,其中*
是您要替换的角色
将所有模式加入一个最终的正则表达式模式
如果要将正则表达式应用于整个字符串,请在开头添加^
,在结尾添加$
。