我最近发现了下面的Javascript,并且(相信)我理解它的操作,但是无法弄清楚(看起来是什么)是一个¿正则表达式字符串类? ( “/\W/.test”)
function AlphaNumericStringCheck(text)
{
if (/\W/.test(text.replace(/^\s+|\s+$/g,""))) return false;
return true;
}
有人可以为这种技术命名,所以我可以更多地研究它吗?
答案 0 :(得分:4)
源代码中的/\W/
为regular expression literal(MDC 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