高级Javascript正则表达式?

时间:2012-03-01 18:16:53

标签: javascript regex

我最近发现了下面的Javascript,并且(相信)我理解它的操作,但是无法弄清楚(看起来是什么)是一个¿正则表达式字符串类? ( “/\W/.test”)

   function AlphaNumericStringCheck(text) 
   {
       if (/\W/.test(text.replace(/^\s+|\s+$/g,""))) return false;
       return true;
   }

有人可以为这种技术命名,所以我可以更多地研究它吗?

2 个答案:

答案 0 :(得分:4)

源代码中的/\W/regular expression literalMDC link,因为MDC比规范清晰约18倍)。就像字符串文字(“foo”)一样,正则表达式文字是在代码中编写正则表达式的一种方式。正则表达式文字中的/字符类似于字符串文字中的引号字符。在字符串文字中,引号内的内容是字符串的内容;在正则表达式文字中,/字符内的是正则表达式。 (结尾/后面也可能有标记。)

所以这个:

var rex = /\W/;

...为正则表达式\W创建正则表达式对象(匹配一个单词字符)。它(基本上)等同于:

var rex = new RegExp("\\W");

请注意,在long格式中,我必须转义字符串中的反斜杠,因为反斜杠在字符串文字中是特殊的。这是我们使用正则表达式文字的原因之一:因为当你必须转义所有反斜杠(反斜杠是许多正则表达式的重要部分)时,它会非常快速地混淆。

正则表达式是对象,它们具有附加功能的属性(实际上是方法,尽管JavaScript在技术上并不具有方法本身)。因此/\W/.test(...)调用文字test定义的正则表达式对象上的/\W/函数。

答案 1 :(得分:0)

\W是单词的快捷方式(简写字符类或扩展名)。就像数字的\d和空格和新行的\s一样。这取决于你正在使用的正则表达式的实现。

在编译之前,这些文字被完整表达式替换。 \d变为[0-9]\W可能变为[0-9a-Z][0-9a-Z]*或类似。它们旨在使您的表达更具可读性。

您可以在此处查看更多内容:http://www.zytrax.com/tech/web/regex.htm#special