0
<form name="form1">
<input type="textbox" name="txtInput" />
<script type="text/javascript">
function validate() {
if (! document.form1.txtInput.value.match(/\bSun(il)? (Mishra)?\b/)){
    alert("Please enter valid value!");
} else {
    alert("Success!");
}
}
</script>
<input type="button" name="btnSubmit" onclick="validate()" value="Go" />

它在Sunil MishraSun Mishra上取得成功,但在Sunil OR Sun上却没有。我尝试用空格输入输入,但这也不起作用。

代码有问题吗?

4

3 回答 3

4

如果空间是可选的,它也需要在第二组中:

/\bSun(il)?( Mishra)?\b/

在末尾添加空格不起作用的原因是因为\b在空格之后的字符串末尾没有单词边界( )。

于 2013-06-07T13:00:09.637 回答
1
/\bSun(il)? (Mishra)?\b/

这不匹配SunSunil本身不匹配的原因Mishra是正则表达式模式中两个名称之间的空格。

空格未显示为可选,因此如果空格不存在,则模式将无法匹配,即使Mishra是可选的。

要解决此问题,请移动括号Mishra以包含其前面的空格:

/\bSun(il)?( Mishra)?\b/
于 2013-06-07T13:01:00.933 回答
0

正如其他答案所指出的那样,您不必将空间添加到第二组中,而是可以使用:/\bSun(il)?\s*(Mishra)?\b/。这将允许多个空格、制表符等,同时也将其排除在 Mishra 组的结果之外。

于 2013-06-07T13:10:35.303 回答