我需要阻止用户输入超过2个单词,但允许包含短划线的单词。
允许
迈克 - 大卫史密斯不允许
迈克大卫史密斯我的代码如下,仅适用于允许两个单词,但无法识别带短划线的单词作为一个单词
<script type="text/javascript">//<![CDATA[
$(function(){
var maxWords = 2;
jQuery('#fullname').keypress(function() {
var $this, wordcount;
$this = $(this);
wordcount = $this.val().split(/\b[\s,\.-:;]*/).length;
if (wordcount > maxWords) {
alert("Please enter a maximum of 2 words (forename and surname)");
return false;
}
});
jQuery('#fullname').change(function() {
var words = $(this).val().split(/\b[\s,\.-:;]*/);
if (words.length > maxWords) {
words.splice(maxWords);
$(this).val('');
////////// alert("Please enter a maximum of 2 words (forename and
surname)");
}
});
});//]]>
</script>
非常感谢提前
答案 0 :(得分:1)
在正则表达式中进行以下更改
\b
- 因为您正在拆分,而不是匹配。-
+
而不是*
允许连续的冒号或空格等作为一个分隔符即
"Mike-David Smith".split(/[\s,\.:;]+/) //["Mike-David", "Smith"]
<强>演示强>
var regex = /[\s,\.:;]+/;
console.log("Mike-David Smith".split(regex));
console.log("Mike David Smith".split(regex));
console.log("Mike-David-Smith".split(regex));