在JavaScript中,我使用正则表达式/^([a-z]){3}^(foo)/i
来尝试匹配特定单词和单词的长度。正则表达式也应该不区分大小写。所以我在最后添加了i
修饰符。
我认为这应该做的是
^ : Start at beginning of string
([a-z]){3} : Match [a-z] exactly three times
^ : Go back to start of string
(foo) : Match the word foo exactly
但是,当我使用以下字符串fOo
,foo
,Foo
,FoO
对其进行测试时,它并未返回任何匹配项。
如果有人能解释我做错了什么并帮助我解决问题,我将不胜感激。
编辑Sukima
应该有效的示例字符串:
fOo
FoO
foo
FOO
不应该工作的示例字符串
f o o
adfsFoO
fooFoe
FfOoF
:fdFoo:
正则表达式的目的是检查字符串是否与单词foo
完全匹配,并且长度为3
。
答案 0 :(得分:5)
因此foo
实际上是您之前的正则表达式的子集,以下应该可以做到这一点:
/^\w{3})/i
如果不允许,请或以下其中一项:
/^[a-z]{3}/i
/^[A-a]{3}/
此正则表达式匹配字符串开头的正好三个字符的每个单词(如果指定/ m修饰符,则为行),无论其是大写还是小写。
如果您需要精确匹配单词foo,无论其情况如何,请转到:
/^foo$/i
示例匹配:fOo
,fOo
,foo
,Foo
,FoO
...更多regex101
答案 1 :(得分:0)
你在regexp中有两个问题。首先,$(".datepicker").each(function() {
$(this).datepicker();
// Returns something like { id: "datepicker", ..., value: "11-11-2016" }
var originalAttributes = getElemAttributes(this);
// Do stuff that affects attr on element.
$(this).datepicker("option", "changeYear", true);
// Set element attributes from riginal attributes object.
if (originalAttributes.hasOwnOroperty("value")) {
$(this).attr("value", originalAttributes["value"]);
}
else {
// Didn't originally have a "value" attribute - set some default here?
}
});
表示行的开头,除非它是正则表达式模式中的第一个字符,否则没有意义。
其次,模式^
无论如何都会与[a-z]{3}
匹配,因此第二种模式只是噪音。
认为您想要的只是foo
,其匹配^[a-z]{3}
和foo
中的foo
。
另外,如果你想在行的开头(或结束)匹配多个模式,那么你必须用管道foobar
分隔模式。
|
将与^foo|^bar
和foo
匹配,但不会与bar
或bazbar
匹配。