jQuery中的正则表达式

时间:2010-12-29 19:20:57

标签: javascript jquery regex

我是一名PHP编码员,Javascript对我来说是新手。现在我正在阅读一些关于Javascript中Regexp的手册。我无法使用jQuery。

以下是两个例子。

http://jsfiddle.net/borayeris/utG6H/这个有效:

<script type="text/javascript">
 $(function(){
     str = "For more information, see Chapter 3.4.5.1";
     re = /(chapter \d+(\.\d)*)/i;
     found = str.match(re);
    document.write(found);
 });
</script>

http://jsfiddle.net/borayeris/QyFPE/1/这不是:

<script type="text/javascript">
 $(function(){
     str = "For more information, see Chapter 3.4.5.1";
     re = /(chapter \d+(\.\d)*)/i;
     found = str.match(re);
     $('div#write3').text(found);
 });
 </script>

标记:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
    Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>RegEx</title>
<script type="text/javascript" src="jquery-1.4.4.js"></script>
</head>
<body>

<div id="write3"></div>

</body>
</html>

4 个答案:

答案 0 :(得分:5)

Found是一个匹配数组(如果没有找到则为null)。尝试更改此内容:$('div#write3').text(found); 这个$('div#write3').text(found[0]);

有关详细信息,请参阅here

答案 1 :(得分:3)

Drackir is correct,但是错过了工作和不工作示例之间差异的更有趣点。 document.write需要一个字符串,并自动调用该数组的toString方法。 jQuery的text可以使用字符串或函数,因此不会自动调用数组的toString

真正平行的例子是:

document.write(found); 

$('div#write3').text(found.toString());

答案 2 :(得分:1)

http://jsfiddle.net/QyFPE/5/

  1. 您不需要在jsfiddle中放置标题,doctype等,这些块会将代码放在适当的位置。
  2. 这应该有效,我所做的唯一改变就是将内容放在正确的位置(并且在您的章节编号中取消分组您的模式以捕获子组数字)

答案 3 :(得分:1)

dom函数document.write将接受数组名作为参数,并可以打印所有元素

eg: <script language="JavaScript">
<!--
var myarray = new Array();
for (i = 0; i < 10; i++)
{
    myarray[i] = i;
}
document.write(myarray);
//  -->
</script>

will give 0,1,2,3,4,5,6,7,8,9

Where as .text() function can only accept a string as parameter 
text( textString )