出于某种原因,我似乎找不到合适的答案。
我一直试图逃脱插入符号(\ ^),并使用\ 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);
帮助!
答案 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将其视为注释的开头。 : - (