2012-11-06 83 views
1

为了更好地理解JavaScript/OOP,我很好奇JavaScript中如何处理正则表达式参数参数。我已经对正则表达式有了很多了解,所以这不是关于模式的解释。这是关于如何识别JavaScript如何处理它。JavaScript对象:正则表达式对象如何传递?

实施例:

newStr = str.replace(/(^\W*|\W*$)/gi,''); 

这基本上修剪任何特殊字符和空白从字符串。然而,/(^\W*|\W*$)/gi而不是封装的字符串,因此,它让我很难理解这个概念,因为JS对象不是字符串,也不是数字。单独使用这种对象类型(即仅使用正则表达式),还是用于其他目的?

+0

感谢大家的快速回复!你所有的答案都很好! – Jonathan

回答

6

这只是一个特殊的语法 JavaScript有正则表达式。它的一个对象,并且不小于不同:

var rex = /(^\W*|\W*$)/gi; 
decision = str.replace(rex, ''); 

或者:

var rex = new RegExp('^\\W*|\\W*$', 'gi'); 

The RegExp MDN documentation有大量的详细信息。

+0

糟糕:) – josh3736

3

正则表达式是JavaScript中的一等公民,即他们是一个单独的对象类型。

可以使用其标准的构造函数构造一个新的RegExp对象:

var regex = new RegExp("(^\\W*|\\W*$)", "gi"); 

,或者使用特殊的“正则表达式文字”符号,让你以减少反斜杠:

var regex = /(^\W*|\W*$)/gi; 
2

/(^\W*|\W*$)/gi是一个regular expression literal,这是一个JavaScript中的对象类型。此类型可以作为第一个参数传递给replace方法,该方法接受正则表达式或子字符串。

2

这是单独对象的类型(即,正则表达式只)

这是正确的。 RegExp object s是内置于该语言中的一种特殊类型的值。它们只是少数几种在JavaScript中具有“字面”表示的类型之一。

这确实使它们相当独特;该语言中没有任何其他专用文字。其他文字是通用的类型,如:

  • null
  • 布尔值(true/false
  • 号码(1.02e3-5
  • 字符串('hello'"goodbye"
  • Array小号([1, 2, 3]
  • Object S({ name: "Bob", age: 18 }
1

为了增加人们说在很大程度上同样的事情:

在的事实,这是一个文字与自己的语法,实际上你可以访问的文本形式的方法顶部:

/bob/gi.exec(" My name is Bob "); 

...所以只要你使用的浏览器是足够年轻,确实支持正则表达式文字(这是很难找到一个不,这几天,如果你这样做,做的浏览器支持CSS?)。

相关问题