2016-04-21 121 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)); 
 
});