<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 Mishra , Sun Mishra 上取得了成功,但 Sunil 或 Sun 取得了成功。我尝试用空格输入输入,但这也不起作用。
代码中是否存在问题?
答案 0 :(得分:4)
如果空格是可选的,它也需要在第二组中:
/\bSun(il)?( Mishra)?\b/
在末尾添加空格的原因不起作用是因为在空格后的字符串末尾没有单词边界(\b
)。
答案 1 :(得分:1)
/\bSun(il)? (Mishra)?\b/
这与Sun
或Sunil
不匹配而没有Mishra
的原因是因为正则表达式模式中两个名称之间的空格。
空格未显示为可选,因此如果空格不存在,则模式将无法匹配,即使Mishra
是可选的。
要解决此问题,请移动Mishra
周围的括号以包含其前面的空格:
/\bSun(il)?( Mishra)?\b/
答案 2 :(得分:0)
您可以使用:/\bSun(il)?\s*(Mishra)?\b/
,而不是像其他答案所指出的那样将空间添加到第二组中。这将允许多个空格,制表符等,同时还使其不受Mishra小组的影响。