这个JavaScript RegExp如何工作?

时间:2012-03-26 19:57:18

标签: javascript regex

我对这是如何运作感到迷茫:

x=x.replace(/^\s+|\s+$/g,"");

什么是管道(|)?

6 个答案:

答案 0 :(得分:5)

管道意味着"或"。

所以你的正则表达式匹配

^    # the start of the string
/s+  # followed by whitespace (one or more characters)
|    # or
/s+  # whitespace
$    # followed by the end of the string

/g(全局)修饰符将正则表达式应用于字符串中的所有匹配项,而不仅仅是第一个匹配项。

答案 1 :(得分:3)

这意味着or。左边的部分匹配任何前导空格(^),右边的部分匹配任何尾随空格($)。 g修饰符允许多次应用此匹配,如果您期望尾随和前导空间,这将非常有用。

基本上这个正则表达式修剪了空格。

编写此正则表达式的另一种方法是使用new RegExp构造:

x = x.replace(new RegExp("^\s+|\s+$", "g"), "");

如果发现这种符号更具可读性,因为您不需要分隔符(/)并且您的修饰符已分开。

答案 2 :(得分:2)

这是一种交替构造。

正则表达式说“字符串的开头后跟一个或多个空格字符,或者,一个或多个空格字符后跟字符串结尾”。

无论如何,我认为这是意图。我现在不确定我是否读过JaredPar的答案。

如果我写这篇文章,我会用parens来表达它。

  

x = x.replace(/(^ \ s + | \ s + $)/ g,“”);

答案 3 :(得分:1)

正则表达式中的“管道”代表“ OR ”,因此您的正则表达式将匹配“管道”之前的模式“管道”之后的模式

答案 4 :(得分:1)

管道字符“|”代表“或”。

答案 5 :(得分:1)

管道代表OR
/g代表Global
\s代表Space