【发布时间】:2012-07-06 17:29:15
【问题描述】:
我知道 SO 不是一个代码生成器,但我打破了我的脑袋,我会被这个 RegExp 弄疯的。
我在 HTML <form /> 中输入了 <input /> 文本。当用户双击特定列表中的元素时,输入会自动填充。
此事件将生成类似"[text:number]" 或"[text:number:text]" 的字符串,并将其放在我的<input /> 字段中的光标位置。
这个过程的第一个目标是构建一个数学公式结构。我的意思是,生成的括号之间的字符串会插入元素,然后我想允许用户输入 only 数字和运算符。
我尝试绑定keydown 事件,并使用String.fromCharCode(e.which); 测试字符,但对于键“+”或“-”(以及其他运算符),此函数返回字母字符。没有成功。
然后,我终于决定使用keyup 事件,然后使用正则表达式替换<input /> 值。
$("#inputID").keyup(function(){
var formule = $(this).val();
var valid_formule = formule.replace(CRAZY_REGEXP,'');
$(this).val(valid_formule);
});
所以,我的问题如下:
如何构造一个 javascript RegExp,以删除括号中不是的所有字符,以及与()+-*/,. 和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)"
如果您有一些想法,我愿意以另一种方式实现我的目标。 谢谢!
【问题讨论】:
-
如果您想检查括号的平衡性,正则表达式将无法完成这项工作。你需要一个更复杂的解析器。
标签: javascript jquery regex math