删除除 0-9 + - / * 和 ^ 之外的任何字符 [重复]
Posted
技术标签:
【中文标题】删除除 0-9 + - / * 和 ^ 之外的任何字符 [重复]【英文标题】:Removing any character besides 0-9 + - / * and ^ [duplicate] 【发布时间】:2012-12-10 13:01:43 【问题描述】:我正在尝试进一步了解 javascript 中的正则表达式。
所以我有一个表单,允许用户提供任何字符串。我想使用该字符串并删除任何不是数字、括号、+、-、*、/ 或 ^ 的字符。我正在尝试编写一个否定的正则表达式来抓取任何无效的内容并将其删除。到目前为止,有关此问题的代码如下所示:
var pattern = /[^-\+\(\)\*\/\^0-9]*/g;
function validate (form)
var string = form.input.value;
string.replace(pattern, '');
alert(string);
;
此正则表达式在 http://www.infobyip.com/regularexpressioncalculator.php 正则表达式测试器上按预期工作,但始终使用我提供的确切字符串发出警报,而无需在计算器中进行任何更改。任何建议或指示将不胜感激。
【问题讨论】:
您不需要转义字符集中的所有内容:/[^-+()^*\/0-9]/g
。
@Blender: ^
没有'也不需要转义。)
@minitech:奇怪的是,这并没有给 JS 正则表达式引擎带来麻烦。谢谢。
@minitech:其实我也想知道同样的事情,但我在 Chrome 中尝试过,它工作得很好,没有任何转义。
@MarkByers:真的吗?想不到,我认为这只是 VIM 中的一个问题。我猜 JavaScript 的正则表达式比它们更聪明:)
【参考方案1】:
replace
方法不会修改字符串。它使用替换结果创建一个新字符串并将其返回。您需要将替换的结果分配回变量:
string = string.replace(pattern, '');
【讨论】:
哇。谢谢你。我非常专注于正则表达式,我错过了明显的。以上是关于删除除 0-9 + - / * 和 ^ 之外的任何字符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章