如何判断 一段字符是不是 “正则表达式”?

图片描述

背景:最近学javascript正则,以上是我写的一个练习工具,在文本框中输入正则表示式,然后匹配到的上列span标签会出红框

问题:我在文本框输入的文本,然后用eval()转换成表达式用于校验,如果我输入的是规范的表达式就能被顺利转换成功,如果输入的不规范如“abc”则在eval('abc')阶段出错,然后程序就会中断不再往下执行,苦恼……(eval()这个东西执行不下去甚至报错都没有,而且不能通过 if( eval('abc') )判断其可行性。

求助:我设想能有一个正则表达式来验证文本框中的文字是不是正则表达式,验证通过才用eval()处理。就是用来验证是不是属于 "/任意字符/igm" 这种格式,那种我想这个这样写/^/.*/[igm]貌似不太对。
请问要如何写?
规则:
/ 开头
后面有 /
结尾可以是i、g、m的任意组合,但同一字符只能出现一次
请问以上如何写?谢谢

说了这么说,谢谢老司机的热心。多谢您!好人一生平安。

-

阅读 8k
2 个回答

楼上答案说的是 如何判断 一段字符是不是 “正则表达式”? 没有错,而且也是楼主需要的,但我想楼主更应该想了解这个东西,JS 的 try_catch 语句:

try {
    eval('abc');
} catch(e) {
    console.log("出错了! 错误是:", e);
}
console.log("程序继续运行");

clipboard.png

https://segmentfault.com/a/11...
https://segmentfault.com/q/10...
我已经解决了,参考了以上的两个方法
希望能帮助到大家

<input type="text"  id="newText"   />
    $("#newText").keyup(function(){
        JTester( $(this).val());
        console.log(myReg);
    });
    var myReg;
    function JTester(r) {
        myReg= null;
        var begin = r.indexOf('/');
        var end = r.lastIndexOf('/');
        if (begin<0 || end<0 || begin==end) {
            return
            //console.log(begin+'\t\t'+end );
        }
        var flags = r.match(/\/([igm]{0,3})$/i)[1];
        myReg = new RegExp(r.substring(begin + 1, end), flags);
    };
推荐问题
宣传栏