Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.5k views
in Technique[技术] by (71.8m points)

输入正则表达式 匹配其他项

有这么个场景,需要将输入的数据A 作为正则表达式去校验/匹配 别的参数。没有对输入做任何限制,

try {
       reg = new RegExp(reg); // reg:数据A
     } catch (e) {
        return;
     }

现在是先将输入 数据new RegExp 处理了一下,但是如果用户输入的就是/d//[a-z]{3,}/这样的,就有点问题了,

请问这种怎么处理呢


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

你是要删除冗余的/? 可以使用正则处理:

'/[a-z]{3,}/'.replace(/^(/)(.+)1$/, '$2'); // "[a-z]{3,}"

可以引导用户不要输入收尾/。比如在输入框前后增加提示:
image.png

但是实现把用户输入的字符转成正则没那么简单,比如用户输入d,内部要转成\d,再转成正则。
可以参考https://regex101.com/的实现。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...