我使用下面的正则表达式不能使用正则表达式逃避反斜杠?
^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$
我知道这是丑陋的,但到目前为止,它提供比没有被允许,因为我认为它应该因为它躲过了反斜线其他的目的,我也试过\\
代替\\\
但结果相同。有任何想法吗?
我使用下面的正则表达式不能使用正则表达式逃避反斜杠?
^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$
我知道这是丑陋的,但到目前为止,它提供比没有被允许,因为我认为它应该因为它躲过了反斜线其他的目的,我也试过\\
代替\\\
但结果相同。有任何想法吗?
如果你把这个字符串中的一个程序中,你实际上可能需要使用四个反斜杠(因为字符串解析器会删除他们两个当“去转义”它为串,然后正则表达式需要两个用于逃逸正则表达式反斜杠)。
例如:
regex("\\\\")
被解释为......
regex("\\" [escaped backslash] followed by "\\" [escaped backslash])
被解释为......
regex(\\)
被解释为匹配一个反斜杠正则表达式。
根据不同的语言,你也许可以使用不同的形式引用不分析转义序列,以避免使用尽可能多的 - 例如,在Python:
re.compile(r'\\')
前面的r
使其成为原始不解析反斜杠转义的字符串。
如果不是字面意思,则必须使用\\\\
,以便获得\\
这意味着转义反斜杠。
这是因为有两种表示。在你的正则表达式的字符串表示中,你有"\\\\"
,这是发送到解析器的东西。解析器将看到它被解释为有效的反斜杠(匹配单个反斜杠)的\\
。
反斜杠\
是正则表达式的转义字符。因此,双反斜杠确实意味着单个反斜杠。
\ (backslash) followed by any of [\^$.|?*+(){} escapes the special character to suppress its special meaning.
从http://www.regular-expressions.info/charclass.html:
注意,在字符类的内部的唯一特殊字符或元字符是右括号([),反斜杠( \\),脱字号(^)和连字符( - )。通常的元字符是字符类中的普通字符,不需要用反斜线进行转义。要搜索星号或加号,请使用[+ *]。如果您逃避字符类中的常规元字符,那么您的正则表达式将正常工作,但这样会显着降低可读性。
要在字符类中包含一个没有任何特殊含义的字符作为反斜杠,必须用另一个反斜杠进行转义。 [\\ x]匹配反斜线或x。括号(]),插入符号(^)和连字符( - )可以通过用反斜杠转义,或者将它们放在不具有其特殊含义的位置来包含。我推荐后一种方法,因为它提高了可读性。要包括一个插入符号,请将其放置在除开启支架之后的任何地方。 [x ^]匹配一个x或一个插入符号。你可以把右括号放在开头的括号之后,或者是否定的脱字号。 [] x]匹配右括号或x。 [^] x]匹配任何不是右括号或x的字符。连字符可以包含在右括号之后,也可以在右括号之前,或者在否定词之后。 [-x]和[x-]都匹配x或连字符。
你在写什么语言的正则表达式?
此解决方案解决了我的问题,同时将br标记替换为'\ n'。
alert(content.replace(/<br\/\>/g,'\n'));
什么语言?它是否被引用? – 2010-10-26 15:59:21
我只是修正了标题中的拼写错误,但是关于标题“无法用正则表达式逃避反弹?确实! – 2010-10-26 16:04:52
@AdamCrossland难道我们都希望正则表达式可以帮助我们摆脱反弹? > _> – 2010-10-26 16:16:10