Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么有两个'\';用正则表达式?_Javascript_Regex - Fatal编程技术网

Javascript 为什么有两个'\';用正则表达式?

Javascript 为什么有两个'\';用正则表达式?,javascript,regex,Javascript,Regex,为什么在“s”和“t”之前有两个“\” 这个“[\s\t\xa0\u3000]”是什么意思?您使用的是 在文本字符串中,\字符用于转义一些其他字符,例如\n(新行)或\“(双引号),并且必须将其自身转义为\。因此,如果希望字符串具有\s,则必须在字符串文本中写入\\s 谢天谢地,JavaScript提供了一个更好的解决方案: 你用的是一个 在文本字符串中,\字符用于转义一些其他字符,例如\n(新行)或\“(双引号),必须将其本身转义为\。因此,当您希望字符串具有\s时,必须用字符串文字编写\\s

为什么在“s”和“t”之前有两个“\”

这个“[\s\t\xa0\u3000]”是什么意思?

您使用的是

在文本字符串中,
\
字符用于转义一些其他字符,例如
\n
(新行)或
\“
(双引号),并且必须将其自身转义为
\
。因此,如果希望字符串具有
\s
,则必须在字符串文本中写入
\\s

谢天谢地,JavaScript提供了一个更好的解决方案:

你用的是一个

在文本字符串中,
\
字符用于转义一些其他字符,例如
\n
(新行)或
\“
(双引号),必须将其本身转义为
\
。因此,当您希望字符串具有
\s
时,必须用字符串文字编写
\\s

谢天谢地,JavaScript提供了一个更好的解决方案:

为什么在“s”和“t”之前有两个“\”

在正则表达式中\是一个转义,它告诉正则表达式后面跟着一个特殊字符。因为您在中使用它,所以需要使用\来转义

这个“[\s\t\xa0\u3000]”是什么意思

这意味着匹配以下字符之一:

  • \这是空白
  • \t制表符
  • \xa0
  • \u3000
此函数效率低下,因为每次调用它时,它都将字符串转换为正则表达式,然后编译该正则表达式。使用not字符串并在函数外部编译正则表达式会更有效,如下所示:

var trimer = /(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+\x24)/g
var trimRegex = /(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+$)/g;

function trim(str) {
    return String(str).replace(trimRegex, "");
}
除此之外\s将匹配任何包含制表符、宽空格和非分隔空格的空白,以便您可以将正则表达式简化为以下内容:

var trimer = /(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+\x24)/g
var trimRegex = /(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+$)/g;

function trim(str) {
    return String(str).replace(trimRegex, "");
}
浏览器现在实现了修剪功能,因此您可以使用此功能,并为旧浏览器使用多边形填充。看到这个了吗

为什么在“s”和“t”之前有两个“\”

在正则表达式中\是一个转义,它告诉正则表达式后面跟着一个特殊字符。因为您在中使用它,所以需要使用\来转义

这个“[\s\t\xa0\u3000]”是什么意思

这意味着匹配以下字符之一:

  • \这是空白
  • \t制表符
  • \xa0
  • \u3000
此函数效率低下,因为每次调用它时,它都将字符串转换为正则表达式,然后编译该正则表达式。使用not字符串并在函数外部编译正则表达式会更有效,如下所示:

var trimer = /(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+\x24)/g
var trimRegex = /(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+$)/g;

function trim(str) {
    return String(str).replace(trimRegex, "");
}
除此之外\s将匹配任何包含制表符、宽空格和非分隔空格的空白,以便您可以将正则表达式简化为以下内容:

var trimer = /(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+\x24)/g
var trimRegex = /(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+$)/g;

function trim(str) {
    return String(str).replace(trimRegex, "");
}

浏览器现在实现了修剪功能,因此您可以使用此功能,并为旧浏览器使用多边形填充。请参见此

这是两个反斜杠,因为单个反斜杠在Javascript中有特殊含义。因此,您需要“避开”反斜杠。我们应该找到一个更好的QA,以重复方式结束。这一个太不一样了(但我相信它是重复的),我能找到@DenysSéguret,我想他们都被认为太简单了。这是两个反斜杠,因为一个反斜杠在Javascript中有特殊的含义。因此,您需要“避开”反斜杠。我们应该找到一个更好的QA,以重复方式结束。这一个太不一样了(但我相信它是重复的)我能找到的最好的@DenysSéguret,我想他们都被认为太简单了……希望还是谢天谢地?@Liam抱歉,我还在学英语(大约30年前开始的,我想几个世纪后我就会好了)不要道歉,我也是,我一辈子都在说英语!希望还是谢天谢地?@Liam对不起,我还在学英语(大约30年前开始,我想几个世纪后我就会好了)不要道歉,我也是,我一辈子都在说英语!