对于我的正则表达式:
^(http(s)?\://)?(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})$
我想知道为什么"john"
通过了?这个正则表达式只能传递给URL
> var j = new RegExp("^(http(s)?\://)?(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})$");
> j.test("john")
> true
正则表达式行中需要\.
答案 0 :(得分:7)
您正在通过将字符串传递给RegExp
构造函数来构建正则表达式。
虽然\
作为正则表达式中的转义字符具有特殊含义,但它在字符串文字中也具有相似的含义。
字符串文字中的\\
已在字符串中解析为\
,因此在正则表达式中被视为转义字符。
您需要提供转义的\
和以及转义转义字符。
因此,对于与您需要的单个\
匹配的正则表达式:
var myRegEx = new RegExp("\\\\")
我建议避免使用构造函数并使用正则表达式文字。
var myRegEx = /\\/;