正则表达式检查单词和单词长度

时间:2016-07-28 12:39:12

标签: javascript regex

在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

但是,当我使用以下字符串fOofooFooFoO对其进行测试时,它并未返回任何匹配项。

如果有人能解释我做错了什么并帮助我解决问题,我将不胜感激。

Regex101

编辑Sukima

应该有效的示例字符串:

fOo
FoO
foo
FOO

不应该工作的示例字符串

f o o
adfsFoO
fooFoe
FfOoF
:fdFoo:

正则表达式的目的是检查字符串是否与单词foo完全匹配,并且长度为3

2 个答案:

答案 0 :(得分:5)

因此foo实际上是您之前的正则表达式的子集,以下应该可以做到这一点:

/^\w{3})/i
如果不允许,请

或以下其中一项:

/^[a-z]{3}/i
/^[A-a]{3}/

此正则表达式匹配字符串开头的正好三个字符的每个单词(如果指定/ m修饰符,则为行),无论其是大写还是小写。

编辑(回复评论):

如果您需要精确匹配单词foo,无论其情况如何,请转到:

/^foo$/i

示例匹配:fOofOofooFooFoO ...更多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|^barfoo匹配,但不会与barbazbar匹配。