首页 新闻 搜索 专区 学院

求一个正则表达式

0
悬赏园豆:10 [已解决问题] 解决于 2018-12-25 20:18

Plagiogyria stenoptera var. major
Pteris vittata f. cristata
Pteris Sect. Quadriauricula
Clematis alpina subvar var. rupestris

这是植物的学名(拉丁),可以有上面几种情况
现在要根据不同的部分,显示不同的样式
含有var. 、f. 、 subsp. 、"X 、Sect. (注意有个点) 这几个前缀字符的,要将字符解析一下
前缀字符前的格式为一个单词或两个单词(第一个单词首字母大写),两个单词之间有一个空格
前缀字符后有一个单词
前缀字符的前后分别带一个空格

前缀显示为正体,其他部分显示为斜体

我现在要分别提取前缀字符前的部分,前缀字符,和前缀字符后面部分。提取的前缀不包含空格。
请问正则表达式怎么做到?

寻找薛定谔的猫的主页 寻找薛定谔的猫 | 初学一级 | 园豆:97
提问于:2018-12-20 21:56
< >
分享
最佳答案
0

var str = "Plagiogyria stenoptera var. major";
var str1 = "Pteris vittata f. cristata";
var regExp = /(.+)(var.|f.|subsp.|"X|Sect.)(.+)/;
var s = str.match(regExp);
var s1 = str1.match(regExp);
console.log(s,s1);
结果是一个数组,第一个元素是总体符合要求的,你可以不管,
第2,3,4个元素分别为正则括号里的子集,也就是你的结果,需要去空格的你就拿出来做下处理。
正则表达式里有转义字符的,复制上来就没有了,中间括号里的.和"前面都要加转义字符

收获园豆:10
秃秃小前端 | 老鸟四级 |园豆:2168 | 2018-12-21 09:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册