regexp只匹配前后不带字符的字符串

时间:2016-04-21 13:35:29

标签: javascript regex string

我使用javascript。 我需要匹配一个像这样的字符串(如果我必须用真实的单词来描述它):

(之前没有)+(只有一个字,不是可选的)+(“。couleur”(它是一个“固定”字))+(只有一个可选空格)+(“=”(固定字) ))+(仅一个可选空间)+(单词“vert”或“violet”或“orange”)+(之后没有)

我试过了:

   var re1='((?:[a-z][a-z]+))'; 
   var re2='(\\.)'; 
   var re3='(couleur)'; 
   var re4='(\\s?)';    
   var re5='(=)';   
   var re6='(\\s?)';    
   var re7='((?:[a-z][a-z]+))'; 

   var p = new RegExp(re1+re2+re3+re4+re5+re6+re7,["i"]);

但我没有找到如何避免匹配时有什么东西和我的字符串之后的东西,我不知道如何检查最后一部分是“vert”“orange”还是“violet”来匹配它

编辑:这里有一些匹配的字符串:

"test.couleur = vert" 
"te.couleur = violet"

这里有一些不匹配的字符串:

" test.couleur = vert" (space before)
" e tdk.couleur = vert" (something before the first word)
"tdl.couleur = vert e" (something after the last word)
"tdk.couleur = gris" (gris is not "vert" or "orange" or "violet")

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

这个正则表达式应该符合您的需求:

var re = new RegExp('^\\w+\\.couleur\\s?=\\s?(vert|violet|orange)$', 'i');

您可以对其进行测试here

答案 1 :(得分:1)

这应该有效:

var regex = /^\w+\.couleur\s?=\s?(vert|violet|orange)$/i;

这里有你所有的测试字符串:



var strArr = ["test.couleur = vert", "te.couleur = violet", " test.couleur = vert", "  e tdk.couleur = vert", "tdl.couleur = vert e", "tdk.couleur = gris"];

var regex = /^\w+\.couleur\s?=\s?(vert|violet|orange)$/i;

strArr.forEach(function(str) {
  document.body.insertAdjacentHTML('afterend', str + ": " + regex.test(str));
});