我正在以html格式验证用户输入。我希望表单能够捕获任何空格和不允许的单词列表。
<td><input type="text" name="Name" pattern="^[^\s]+$|cow|horse" required ></td>
如果输入中有任何空格,则模式值“^ [^ \ s] + $”的位似乎会捕获。但是,如果输入了牛或马,则以下代码不会捕获/停止表单提交。请有人就此向我提出建议。
答案 0 :(得分:2)
如果要断言输入字段:
<openerp>
<data>
<record id="open_retainer" model="ir.actions.act_url">
<field name="name">Pay Retainer</field>
<field name="type">ir.actions.act_url</field>
<field name="target">new</field>
<field name="url" eval="'some_url' if True else ''"/>
</record>
<menuitem
name="Pay Retainer"
id="menu_pay_retainer"
groups="base.group_portal"
action="open_retainer"
parent="portal.portal_orders"/>
</data>
</openerp>
定义,相当于\s
)[ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
或cow
然后你可以使用以下正则表达式:
horse
由于^(?!(cow|horse)$)\S+$
标记的pattern
字段验证整个字符串与模式匹配,因此开头为input
,而^
位于结束是多余的。
$
答案 1 :(得分:0)
你可以用这样的Javascript进行验证:
<form name="testform" action="testpage.php" onsubmit="return validate()" method="post">
<input type="text" name="Name" pattern="^[^\s]+$" required>
<input type="submit">
</form>
<script>
function validate() {
var x = document.forms["testform"]["Name"].value;
if (x == "cow" || x == "horse") {
alert("can not be "+x);
return false;
}
}
</script>
这是一个有效的例子:http://jsfiddle.net/y9mperc0/
答案 2 :(得分:0)
这是针对边界子串(单词) -
^(?:(?!\s|\b(?:cow|horse)\b)[\S\s])+$
^
(?:
(?!
\s
|
\b
(?: cow | horse )
\b
)
[\S\s]
)+
$
这适用于非边界子串 -
^(?:(?!\s|cow|horse)[\S\s])+$
^
(?:
(?!
\s
| cow
| horse
)
[\S\s]
)+
$