我使用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")
非常感谢你的帮助!
答案 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));
});