我正在使用以下正则表达式
^[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
,则将其变为原始raw字符串,不会解析反斜杠转义符。
new RegExp('\\\\\\d');
。 - jabacchetta\\\\
来得到\\
这个转义后的反斜杠符号。这是因为有两种表示方式。在正则表达式的字符串表示中,你需要写上"\\\\"
,它会被传送给解析器,解析器将会看到\\
并且理解成一个有效的转义后反斜杠符号(匹配一个单独的反斜杠符号)。反斜杠\
是正则表达式的转义字符。因此,双反斜杠确实表示一个单独的、字面的反斜杠。
\(反斜杠)后跟任何 [\^$.|?*+(){}] 中的一个,可以转义特殊字符以抑制其特殊含义。
regex("\\\\?")
这个解决方案在将br标签替换为'\n'时解决了我的问题。
alert(content.replace(/<br\/\>/g,'\n'));