2016-04-21 122 views
0

我使用javascript。 我需要匹配的会是这样的(如果我有真正的词语来形容它)的字符串:正则表达式只匹配前后无字符的字符串

(NOTHING前)+(只有一个字,不可选)+(“.couleur”(它(只有一个可选空间)+(“=”(固定单词))+(只有一个可选空间)+(单词“vert”或“violet”或“orange”)+ (后NOTHING)

我尝试这样做:

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"]); 

但我没有找到如何避免匹配时,也有一些是和之前的东西我的字符串后,和我不知道如何检查最后一部分是否“垂直”“橙色”或“紫色”以匹配它。

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

"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") 

非常感谢您的帮助!

+1

变化're7'到'VAR RE7 ='(? :VERT |橙色|紫色)“; '然后添加锚点,比如'var p = new RegExp(“^”+ re1 + re2 + re3 + re4 + re5 + re6 + re7 +“$”,“i”);' –

+1

成功了, ! @AvinashRaj –

回答

1

这个正则表达式应该满足您的需求:

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

您可以测试它here

+0

谢谢,工作! @MarcoS –

+0

很高兴帮助... – MarcoS

+0

在这个答案中有一些严重的问题('new RegExp('^ \ w + \。couleur \ s?= \ s?(vert | violet | orange)$' 'I')')。 [反斜杠(http://stackoverflow.com/questions/10769964/backslashes-regular-expression-javascript)。 –

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)); 
 
});