Plagiogyria stenoptera var. major
Pteris vittata f. cristata
Pteris Sect. Quadriauricula
Clematis alpina subvar var. rupestris
这是植物的学名(拉丁),可以有上面几种情况
现在要根据不同的部分,显示不同的样式
含有var. 、f. 、 subsp. 、"X 、Sect. (注意有个点) 这几个前缀字符的,要将字符解析一下
前缀字符前的格式为一个单词或两个单词(第一个单词首字母大写),两个单词之间有一个空格
前缀字符后有一个单词
前缀字符的前后分别带一个空格
前缀显示为正体,其他部分显示为斜体
我现在要分别提取前缀字符前的部分,前缀字符,和前缀字符后面部分。提取的前缀不包含空格。
请问正则表达式怎么做到?
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个元素分别为正则括号里的子集,也就是你的结果,需要去空格的你就拿出来做下处理。
正则表达式里有转义字符的,复制上来就没有了,中间括号里的.和"前面都要加转义字符