【发布时间】:2017-08-20 20:07:32
【问题描述】:
我正在尝试将正则表达式格式转换为掩码输入字符串,以引导用户在 UI 上输入正确的输入。数字用“#”表示,字母用“A”表示。
基本上,
"^\d{3}$" --> "###"
"^(GB)\d{3}$" --> "GB###"
"^\d{2}\.\d{3}\/\d{4}-\d{2}$" --> "##.###/####-##"
"^\d{2}[ ]\d{3}[ ]\d{3}$" --> "## ### ###"
函数 convertToMaskInput(正则表达式){
}
convertToMaskInput("^\d{4}$");
//Output: "####"
我是 Javascript 的初学者,我很难动态地做到这一点。任何帮助或指导表示赞赏。
提前致谢!
【问题讨论】:
-
这是一项艰巨的任务,尤其是对于初学者而言。你最好使用digitalbush.com/projects/masked-input-plugin之类的库
-
没有实用的编码解决方案可以涵盖所有正则表达式。如果你有一小组相同的,你可以手动完成。否则,您将不得不做出很多假设。许多正则表达式匹配无数种可能性 - 使这个问题本质上难以解决。
-
如果你有一个已知的输入格式你正在测试(转换?),这样做没有问题。
/^\d{3}$/--> "###"/^(GB)\d{3}$/--> "GB###"/^\d{2}\.\d{3}\/\d{4}-\d{2}$/--> "##.###/####-##"/^\d{2}[ ]\d{3}[ ]\d{3}$/-- > "## ### ###" -
我猜他想从给定的正则表达式生成格式,就像一些
MaskedInput-components 能够做的那样。
标签: javascript regex parsing