为什么正则表达式构造函数需要双重转义?在下面的正则表达式中,\s表示空格字符。我想象正则表达式解析器,正在通过字符串看到\并知道下一个字符是特殊的。但事实并非如此,因为需要双重逃脱。为什么是这样?var res = new RegExp('(\\s|^)' + foo).test(moo);是否有一个具体的例子说明单个逃避如何被误解为其他东西?
                    
                    
                4 回答
 
                    
                    
                            哈士奇WWW
                            
                                
                            
                        
                        
                                                
                    TA贡献1799条经验 获得超6个赞
在那里你要创建一个字符串的代码里面,反斜杠是一个JavaScript转义字符第一,这意味着像转义序列\t,\n,\",等将被翻译成其JavaScript对口(制表符,换行符,报价等),和这将成为字符串的一部分。双反斜杠表示实际字符串本身中的单个反斜杠,因此如果您想在字符串中使用反斜杠,则首先将其转义。
所以当你通过说出你生成一个字符串时var someString = '(\\s|^)',你真正在做的是创建一个带有值的实际字符串(\s|^)。
 
                    
                    
                            慕妹3146593
                            
                                
                            
                        
                        
                                                
                    TA贡献1820条经验 获得超9个赞
\在字符串中用于转义特殊字符。如果你想在字符串中使用反斜杠(例如对于\ in \ s),你必须通过反斜杠转义它。所以\成为\\。
编辑:甚至不得不在这里做,因为\\在我的回答中转向\。
 
                    
                    
                            呼啦一阵风
                            
                                
                            
                        
                        
                                                
                    TA贡献1802条经验 获得超6个赞
正则表达式需要一个字符串表示\s,在JavaScript中可以使用文字生成"\\s"。
这是一个现实的例子来说明为什么"\s"还不够:
alert("One backslash:          \s\nDouble backslashes: \\s");添加回答
举报
0/150
	提交
		取消
	
