求几个JS正则表达式

yaotomo 2018-12-26 04:27:20
1,匹配一个字符串(由多个单词组成,可能是一段话)中第一个首字母大写,其他字母为小写的单词
例如"aSaa r5as Aesa (Asw) sss sAA Yaa SaT" 匹配结果为["Aesa","Yaa"]
2,匹配一个字符串(由多个单词或特殊符号组词)中所有最后一个字符为点(.)的单词
例如 "aaa bbb ccc. ddd ee. fff. rrr t.tt" 匹配结果为 ["ccc.","ee.","fff."]
3,匹配一个字符串(由多个单词,其中有些单词带括号)中所有括号中的单词
例如 "aaa bbb ccc (ddd) eee fff r(rr)aa ttt" 匹配结果为"(ddd)"
4,匹配一个字符串(由多个单词或特殊符号组词)中第一个出现的首字母为大写,且其他字母为小写的单词,和其他不包含特殊字符(如括号、引号等,但可以包括英文字符的点(.)),且首字母为小写的单词。
例如 "wes Aes (sss) ttt ddd vs. Sws rrr yts." 匹配结果为["Aes", "ttt", "ddd" ,"vs." ,"rrr","yts." ]
...全文
931 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
teagueli 2020-07-20
  • 打赏
  • 举报
回复
字符串中间的var.不去
  • 打赏
  • 举报
回复
引用 16 楼 yaotomo 的回复:
Test test var. j. ex. 应匹配Test test 后面带点的都不要,现在的结果是Test test var. j.


function filterWord(text){
let isFirst=true;
let arr=text.split(/\([^()]*\)|\s+/);
return arr.filter(function(item,index){
if(isFirst){
isFirst=false;
return /^[A-Z][a-z]*$/.test(item);
}
if(index===arr.length-1){
return /^(?![eE][xX]$)[a-z]+$/.test(item);
}
return /^(?![eE][xX]$)[a-z]+\.?$/.test(item);
}).join(' ').replace(/(?:\s[a-z]+\.)+$/,'');
}
  • 打赏
  • 举报
回复
引用 15 楼 yaotomo 的回复:
[quote=引用 14 楼 老鼠拧刀满街找猫 的回复:]
[quote=引用 13 楼 yaotomo 的回复:]
我看到了,已经去掉了ex和括号里的内容

et如果也不需要的话,你就把[xX]改为[xXtT]就可以了[/quote]

还有一个问题,如果只输入一个单词,大写打头的话,也要匹配
比如输入Cirsium,现在的结果是不匹配的[/quote]

function filterWord(text){
let isFirst=true;
let arr=text.split(/\([^()]*\)|\s+/);
return arr.filter(function(item,index){
if(isFirst){
isFirst=false;
return /^[A-Z][a-z]*$/.test(item);
}
if(index===arr.length-1){
return /^[a-z]+$/.test(item);
}
return /^(?![eE][xX]$)[a-z]+\.?$/.test(item);
}).join(' ');
}
  • 打赏
  • 举报
回复
引用 16 楼 yaotomo 的回复:
Test test var. j. ex. 应匹配Test test 后面带点的都不要,现在的结果是Test test var. j.

挤牙膏,让别人来解决吧
雨夜汁汁 2018-12-28
  • 打赏
  • 举报
回复
把老师逼疯了,脑细胞都死了好多。
  • 打赏
  • 举报
回复
第五个:

function filterWord(text){
let isFirst=true;
let arr=text.split(/\([^()]*\)|\s+/);
return arr.filter(function(item,index){
if(index===arr.length-1){
return /^[a-z]+$/.test(item);
}
if(isFirst){
isFirst=false;
return /^[A-Z][a-z]*$/.test(item);
}
return /^(?![eE][xX]$)[a-z]+\.?$/.test(item);
}).join(' ');
}
yaotomo 2018-12-27
  • 打赏
  • 举报
回复
Test test var. j. ex. 应匹配Test test 后面带点的都不要,现在的结果是Test test var. j.
yaotomo 2018-12-27
  • 打赏
  • 举报
回复
引用 14 楼 老鼠拧刀满街找猫 的回复:
[quote=引用 13 楼 yaotomo 的回复:] 我看到了,已经去掉了ex和括号里的内容
et如果也不需要的话,你就把[xX]改为[xXtT]就可以了[/quote] 还有一个问题,如果只输入一个单词,大写打头的话,也要匹配 比如输入Cirsium,现在的结果是不匹配的
  • 打赏
  • 举报
回复
引用 13 楼 yaotomo 的回复:
我看到了,已经去掉了ex和括号里的内容
et如果也不需要的话,你就把[xX]改为[xXtT]就可以了
ssson 2018-12-27
  • 打赏
  • 举报
回复
4,匹配一个字符串(由多个单词或特殊符号组词)中第一个出现的首字母为大写,且其他字母为小写的单词,和其他不包含特殊字符(如括号、引号等,但可以包括英文字符的点(.)),且首字母为小写的单词。 例如 "wes Aes (sss) ttt ddd vs. Sws rrr yts." 匹配结果为["Aes", "ttt", "ddd" ,"vs." ,"rrr","yts." ] 第一个出现的 (首字母为大写,且其他字母为小写的单词) 那不就是匹配到Aes, Sws是第二个出现的,所以没匹配. 然而,后面一个条件 和其他不包含特殊字符(如括号、引号等,但可以包括英文字符的点(.)),且首字母为小写的单词,那wes不就满足,为啥你的匹配结果没有? 感觉题目是不是有点问题 "[A-Z][a-z]*|[a-z][a-z\\.]*\\s" 不知道对不对.
ssson 2018-12-27
  • 打赏
  • 举报
回复
1. "\\b[A-Z][a-z]*\\b" 2. "\\w*\\.\\B" 3. "\\B\\([a-zA-z-]*\\)\\B" 4. 题目都看了好几遍,有点绕,再研究一下.
yaotomo 2018-12-27
  • 打赏
  • 举报
回复
我看到了,已经去掉了ex和括号里的内容
yaotomo 2018-12-27
  • 打赏
  • 举报
回复
引用 11 楼 老鼠拧刀满街找猫 的回复:
第五个:

function filterWord(text){
	let isFirst=true;
	let arr=text.split(/\([^()]*\)|\s+/);
	return arr.filter(function(item,index){
		if(index===arr.length-1){
			return /^[a-z]+$/.test(item);
		}
		if(isFirst){
			isFirst=false;
			return /^[A-Z][a-z]*$/.test(item);
		}
		return /^(?![eE][xX]$)[a-z]+\.?$/.test(item);
	}).join(' ');
}
谢谢老师。 Clintonia alpina (Trautv. et C. A. Mey.) J. F. Macbr. var. geniculatum W. T. Wang 括号里的字符都不能要,et 在结果里是不能有的 另外,结果里不能包含字符串 ex Cirsium bolocephalum (Rothm.) Holub var. setchwanicum Petr. ex Hand.-Mazz. f. glaucum Ching 结果是 Cirsium bolocephalum var. setchwanicum f. glaucum 请老师再帮忙看一下
adhuan 2018-12-27
  • 打赏
  • 举报
回复
好久没碰这些代码了,很好
庖丁解鸭 2018-12-27
  • 打赏
  • 举报
回复
alert("aSaa r5as Aesa (Asw) sss sAA Yaa SaT".match(/(\s|^)[A-Z][a-z]+(?=\s|$)/g));

alert("aaa bbb ccc. ddd ee. fff. rrr t.tt".match(/(\s|^)[a-z]+\.(?=\s|$)/ig));

alert("aaa bbb ccc (ddd) eee fff r(rr)aa ttt".match(/(\s|^)\([a-z]+\)(?=\s|$)/ig));

var str4 = "wes Aes (sss) ttt ddd vs. Sws rrr yts.";
还有一个问题,如果只输入一个单词,大写打头的话,也要匹配
比如输入Cirsium,现在的结果是不匹配的
yaotomo 2018-12-26
  • 打赏
  • 举报
回复
引用 9 楼 老鼠拧刀满街找猫 的回复:
如果匹配项的结尾以var.或其他以.结尾的单词,要将其去掉 既然有上面这个限制了,为什么步骤里面还有包含这些字符
最后得到的结果字符串,结尾是var.(或其他英文字符加点)的,要去掉 字符串中间的var.不去
  • 打赏
  • 举报
回复
如果匹配项的结尾以var.或其他以.结尾的单词,要将其去掉
既然有上面这个限制了,为什么步骤里面还有包含这些字符
yaotomo 2018-12-26
  • 打赏
  • 举报
回复
对了,5#的规则还有一条,匹配结果中不能有单词ex
yaotomo 2018-12-26
  • 打赏
  • 举报
回复
引用 6 楼 天际的海浪 的回复:
第四个 alert(["wes Aes (sss) ttt ddd vs. Sws rrr yts.".match(/(\s|^)[A-Z][a-z]+(?=\s|$)/)[0]].concat(RegExp.rightContext.match(/(\s|^)[a-z\.]+(?=\s|$)/g)));
天际的海浪 2018-12-26
  • 打赏
  • 举报
回复
第四个 alert(["wes Aes (sss) ttt ddd vs. Sws rrr yts.".match(/(\s|^)[A-Z][a-z]+(?=\s|$)/)[0]].concat(RegExp.rightContext.match(/(\s|^)[a-z\.]+(?=\s|$)/g)));
加载更多回复(5)
编辑推荐   每个程序员都会遇到需要使用正则表达式的情况,但是要用好正则表达式却并不容易。《正则表达式经典实例》提供了100多个实例,以帮助读者使用正则表达式处理数据和文本。即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,《正则表达式经典实例》对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET的实例。   《正则表达式经典实例》主要包括以下内容:   通过一个精练的教程理解正则表达式的基本原理和技巧;   在不同的编程语言和脚本语言中有效使用正则表达式;   学习如何对输入进行合法性检查和格式化;   处理单词、文本行、特殊字符和数值;   学习如何在uRL、路径、标记语言和数据交换中使用正则表达式;   学习更高深的正则表达式特性中的微妙之处;   理解在不同语言中正则表达式的API、语法和行为之间的区别;   创建更好的正则表达式来满足个性化的需。   使用8种编程语言的详细解决方案,包括一个正则表达式简明教程 内容简介   《正则表达式经典实例》讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战中使用的实例,以帮助读者使用正则表达式来处理数据和文本。对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,《正则表达式经典实例》给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。《正则表达式经典实例》的读者对象是对正则表达式感兴趣的软件开发人员和系统管理员。《正则表达式经典实例》旨在教会读者很多新的技巧以及如何避免语言特定的陷阱,读者可以通过《正则表达式经典实例》提供的实例解决方案库来解决实践中的复杂问题。 ·查看全部>>作者简介   Jan Goyvaerts领导着Just Great Software公司,他在这个公司设计和开发了一些最流行的正则表达式软件。他的产品中包括RegexBuddy,世界上唯一可以模拟l5种正则表达式流派特性的正则表达式编辑器,以及PowerGREP,Microsoft Windows平台上功能最强大的9rep工具。 媒体评论   “这是一本严谨的著作,内容非常丰富。仅仅阅读前几章我就学到了大量的新技巧。”   ——Nikolaj Lindberg 计算语言学家   sTTs语音技术服务公司“本书为紧迫的问题提供了很好的解决方案。对于实例中所包含的细节我感到非常震惊。”   ——Zak Greant 开放技术倡导者和策略专家Jan Goyvaerts领导专家 目录 第1章 正则表达式简介 1.1 正则表达式的定义 1.2 使用正则表达式的工具 第2章 正则表达式的基本技巧 2.1 匹配字面文本 2.2 匹配不可打印字符 2.3 匹配多个字符之 2.4 匹配任意字符 2.5 匹配文本行起始和/或文本行结尾 2.6 匹配整个单词 2.7 Unicode代码点、屙陛、区块和脚本 2.8 匹配多个选择分支之 2.9 分组和捕获匹配中的子串 2.10 再次匹配先前匹配的文本 2.11 捕获和命名匹配子串 ……………………………………………………

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧