如何在Javascript中使用RegExp从字符串中删除插入符号(^)?

如何在Javascript中使用RegExp从字符串中删除插入符号(^)?,javascript,regex,Javascript,Regex,出于某种原因,我似乎找不到一个好的答案 我一直在尝试转义插入符号(\ ^),并使用十六进制、八进制和其他代码来使用\xdd、\ddddd等字符 但是我的replace regexp不会用任何东西替换插入符号(^)。这似乎只是打破了表达方式 以下是我正在使用的代码: 救命啊 以^开头的字符组是一个排除组,它将匹配[]中没有的每个字符 如果要删除任何字母、数字或^,请将正则表达式更改为 myExp = / *[a-zA-Z0-9^\s]/gi; 当您将插入符号作为[]集中的第一个字符时,它表示

出于某种原因,我似乎找不到一个好的答案

我一直在尝试转义插入符号(\ ^),并使用十六进制、八进制和其他代码来使用\xdd、\ddddd等字符

但是我的replace regexp不会用任何东西替换插入符号(^)。这似乎只是打破了表达方式

以下是我正在使用的代码:




救命啊

^
开头的字符组是一个排除组,它将匹配
[]
中没有的每个字符

如果要删除任何字母、数字或
^
,请将正则表达式更改为

myExp = / *[a-zA-Z0-9^\s]/gi;

当您将插入符号作为[]集中的第一个字符时,它表示“不”-但仅在开头。所以你的regexp的意思是“(空格后跟)任何不是a-z,或插入符号,或a-z,或插入符号,或0-9等等的东西”。删除除第一个插入符号以外的所有符号,您可能会更幸运:-)

您是否尝试替换或保留所有a-z、a-z、0-9、空格和克拉

如果要保留它们,请在表达式的开头仅使用一个“^”,如下所示:

[^a-zA-Z0-9\s^]

如果您试图更换所有包括克拉,请使用:
[a-zA-Z0-9^\s]

编辑(根据评论更新答案):

使用
[^a-zA-Z0-9]

匹配并替换所有非a-z、a-z、0-9的字符


注意:您应该使用相同的表达式服务器端来验证这些表单字段,因为人们可能会禁用javascript,或者只是乱用POST值来乱用数据库。

您给出的代码片段相当混乱,但基于问题的标题,如果您只想用其他字符替换字符^,这可以像这样实现

var str1 = "test^123";
var str2 = str1.replace(/\^/g, "\x005E");
alert(str2);

我找到了答案,但你们都帮我找到了答案。谢谢

我想发生的事情是我的exlude(^)被使用了太多次,因此造成了对我的排斥群体的排斥。。。由于两组之间没有分隔符,第一组就起作用了

原件: repExp=/*[^a-z^a-z^0-9]/gi

最终正则表达式: repExp=/*[^a-zA-Z0-9]/gi

上面的方法从字符串中过滤掉任何不是leter(a-zA-Z)或数字(0-9)的内容

谢谢大家


注:首字母“/”后的空格之所以存在,是因为出于某种原因,Dreamweaver将其视为评论的开始:-(

谢谢,虽然我已经意识到这一事实,但有时用户可能会无意中将其输入表单字段。我想确保我的字段只包含字母和数字,没有空格、标点符号或其他任何特殊字符。排除包含我想要保留的内容的小列表比实际情况更有效要列出我要删除的所有项目的详尽列表…我只想保留a-z,a-z,0-9。我想删除/替换所有其他字符。使用
[^a-zA-Z0-9]
匹配任何不匹配的(^)a-z,a-z,0-9。因此.replace将替换任何匹配的字符(不是a-zA-Z0-9)。很抱歉,我忘了给“field”一个样本值。不过,我想我已经弄明白了。谢谢你的回答!实际上,它的意思是排除,但我知道你的意思。谢谢你的回答!RegExp只使用一个
^
紧挨着一个
[
作为排除组,所以你的克拉不是“相互抵消”的。相反,您的KEEP组中有一个“^”。因为您的regexp以
[^
开头,所以
[^…]
中的任何内容都将保留(包括
^
)。你的第二个表达式是说,保持a-z,a-z,0-9。你的第一个表达式是说保持a-z,^,a-z,^,0-9。因此,它决定了
/pattern/gi
中的
/i
修饰符表示忽略大小写,所以你不需要
[^a-zA-Z0-9]
--只需
/*[^a-Z0-9]/gi应该可以。我还想知道领先的
/*
--是不是应该是点星
/.[A-Z0-9]/gi
?我使用了太多的regex方言,因此可能会混淆它们。区分大小写标志的优点是好的。我知道它是多余的,但有时,我忘记设置大小写标志…所以让它以任何方式工作对我们这些心不在焉的人来说都是一种奖励。Dreamweaver将
/[]/
视为注释?
var str1 = "test^123";
var str2 = str1.replace(/\^/g, "\x005E");
alert(str2);