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

时间:2010-06-30 18:43:00

标签: javascript regex

出于某种原因,我似乎找不到合适的答案。

我一直试图逃脱插入符号(\ ^),并使用\ xdd,\ dddd等对字符使用十六进制,八进制和其他代码...

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

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


var field,myExp;    

// \x5E is supposed to represent the caret in Hex...
    myExp = / *[^a-z^A-Z^0-9\s\x5E]/gi;

field = field.replace(myExp,"");
alert(field);

帮助!

5 个答案:

答案 0 :(得分:2)

你提供的代码片段相当令人困惑,但根据问题的标题,如果你只是想用其他东西替换字符^,那就可以像这样实现......

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

答案 1 :(得分:1)

^开头的字符组是排除组,并且会匹配[]的每个字符。< / p>

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

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

答案 2 :(得分:0)

如果将插入符号作为[]集中的第一个字符,则表示“不” - 但仅限于开头。所以你的正则表达式意味着“(空格后跟)任何不是a-z,插入符号,或者A-Z,或者插入符号,或者0-9等”。删除除第一个插入符之外的所有符号,您可能会有更多的运气: - )

答案 3 :(得分:0)

您是否尝试更换或保留所有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值来弄乱数据库。

答案 4 :(得分:0)

我找到了答案,但你们都帮助我到达那里。谢谢!

我认为发生的事情是我的躲避(^)被使用了太多次,因此创建了一个排除我的排他性组...因为组之间没有分隔符,所以第一个就是诀窍。 / p>

ORIGINAL: repExp = / * [^ a-z ^ A-Z ^ 0-9] / gi;

最终地址: repExp = / * [^ a-zA-Z0-9] / gi;

以上过滤掉字符串中任何非leter(a-zA-Z)或数字(0-9)的内容。

谢谢,人们!

P.S。初始“/”之后的空格是存在的,因为出于某种原因,Dreamweaver将其视为注释的开头。 : - (