您好,匿名用户
随意问技术百科期待您的加入

在《javascript语言精粹》一书中,js正则表达式剔除重复的单词出错,什么原因?

0 投票

以下是我按照《javascript语言精粹》一书中的代码写的demo,我想做的事情是历遍文本,把文本中出现的所有单词以只出现一次的形式打印出来(我不知道书中说的“doubled_words”是不是这个意思,不管是不是了,我现在想现实我说的这个结果 ),但是好像没达到我的要求,请教了。

<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title></title>
	
	<style type="text/css">
		#test1,#test2{width:500px;height:200px;border:1px solid #00f;margin-bottom:20px;}
	</style>
	<script type="text/javascript">
	window.onload = function () {
		var test1 = document.getElementById('test1'),
		    test2 = document.getElementById('test2'),
		    textSource = test1.innerHTML,
		    textEscape;
		var textRegExp = /([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD'\-]+)\s+\1/g;//定义一个重复的单词
		textEscape = textSource.replace(textRegExp,"$1");
		test2.innerHTML = textEscape;
		
	}
	</script>
</head>
<body>
	<div id="test1">activity Sizzle It! is is the expert in producing sizzle reels that capture your message and captivate your audience — all with creativity and style.  expert sizzle reels that capture</div>
	<div id="test2"></div>
</body>
</html>

注:我要的效果是:

<div id="test2">activity Sizzle It! is the expert in producing reels that capture your message and captivate audience — all with creativity style.</div>
用户头像 提问 2012年 12月1日 @ Fizz 上等兵 (325 威望)
分享到:

1个回答

0 投票

不知道你说的“没达到要求”是指什么,不过这个正则,确实是去除重复单词了。

var textRegExp = /([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD'\-]+)\s+\1/g;//定义一个重复的单词

文字匹配后的+,会有点错误,可能导致两个相邻的不同单词,前一个单词的结尾和后一个单词的开头的相同字母被删除。
改成

/([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD'\-]{2,})\s+\1/g

会好点
用户头像 回复 2012年 12月1日 @ Pikachu 上等兵 (475 威望)
提一个问题:

相关问题

0 投票
1 回复 50 阅读
0 投票
1 回复 32 阅读
0 投票
1 回复 44 阅读
0 投票
1 回复 44 阅读
+2 投票
1 回复 45 阅读
用户头像 提问 2013年 1月7日 @ Ares 上等兵 (353 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...