删除除 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 + - / * 和 ^ 之外的任何字符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

NSPredicate 匹配除数字之外的任何内容

从 PHP 中的字符串中删除除字母数字字符之外的所有内容

删除除特定表之外的所有表

使用 JQuery 从列表中删除除前 N 个元素之外的所有元素

从全局环境中删除除几个项目之外的所有项目

从网页中删除除文本之外的所有内容的最佳方法是啥?