3

我知道 SO 不是一个代码生成器,但我打破了我的脑袋,我会对这个 RegExp 感到生气。

<input />在 HTML 中输入了文本<form />。当用户双击特定列表中的元素时,输入会自动填充。此事件将生成类似or的
字符串,并将其放置在我的字段中的光标位置。 这个过程的第一个目标是构建一个数学公式结构。我的意思是,括号之间生成的字符串将插入元素,然后我想让用户输入数字和运算符。"[text:number]""[text:number:text]"<input />


我尝试绑定keydown事件,并使用String.fromCharCode(e.which);键“+”或“-”(和其他运算符)测试字符,但此函数返回字母字符。没有成功。
然后,我终于决定使用keyup事件,然后使用 RegExp 替换<input />值。

        $("#inputID").keyup(function(){
            var formule = $(this).val();
            var valid_formule = formule.replace(CRAZY_REGEXP,'');
            $(this).val(valid_formule);
        });


所以,我的问题如下:
如何构造一个 javascript RegExp,以删除所有不在括号之间的字符,以及与 and 不同的()+-*/,.字符numbers
一个例子:
"a[dse:1]a+a[dse:5]a+a[cat:5:sum]a+(a10a/5,5)!"
将成为
"[dse:1]+[dse:5]-[cat:5:sum]+(10/5,5)"

如果您有一些想法,我愿意以另一种方式实现我的目标。谢谢 !

4

1 回答 1

4

你可以尝试这样的事情:

var re = /[^\]\d\(\)+\-*\/,.]+(?=[^\[\]\(\)]*(?:\[|\(|$))/g;
$("#inputID").keyup(function(){
    this.value = this.value.replace(re, "");
});

但请记住,您必须确保括号结构与您的语法一致。

建议:使用RegExr测试您的正则表达式,但请记住它比 Javascript 正则表达式支持更强大。

于 2012-07-06T09:15:14.937 回答