javascript - 正则表达式的客户端验证 - 允许中间有空格但不允许开头和结尾

标签 javascript jquery regex validation

我允许像这样的正则表达式使用空格:

JavaScript:

var re_username = /^[a-zA-Z\040\.\-]+$/;
var is_username = re_username.test($('#chatusername').val());
console.log(is_username);   

...但我想在开始和结束时禁止它。这有效:

JavaScript:

var re_username = /^[a-zA-Z]+[a-zA-Z\040\.\-]+[a-zA-Z\.]+$/;

...但我需要输入至少 3 个(<3 位数字返回 false,尽管我输入了例如 A)正则表达式返回 true 的数字,这会导致添加类和东西时出现问题 ...

我发现这个允许在开头和结尾有空格

JavaScript:

var re_username = /^\S+(?: \S+)*$/

但它允许所有字符......如何匹配我的目标正则表达式?我试过了...但它已经不起作用了..

var re_username = /^\S+([a-zA-Z]\040\S+)*$/; 

最佳答案

使用

var re_username = /^[a-zA-Z.-]+(?:\040+[a-zA-Z.-]+)*$/;

会匹配

  • ^ - 字符串的开始
  • [a-zA-Z.-]+ - 1+ 个字母,.-
  • (?:\040+[a-zA-Z.-]+)* - 0+ 序列
    • \040+ - 1+ 个常规空格
    • [a-zA-Z.-]+ - 1+ 个字母,.-
  • $ - 字符串结尾

参见 regex demo .

注意:如果您不想允许连续的多个空格,请删除 \040 之后的 +

另一种效率较低的方法是通过前瞻:

var re_username = /^(?!\040|.*\040$)[a-zA-Z\040.-]+$/;
                    ^^^^^^^^^^^^^^^ 

在这里,如果在字符串的开头或任何 0+ 个字符之后发现空格,则 (?!\040|.*\040$) 否定先行将导致匹配失败 ( .*) 在字符串的末尾 ($).

关于javascript - 正则表达式的客户端验证 - 允许中间有空格但不允许开头和结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43743978/

相关文章:

javascript - 编写 JQuery 以更改 Drupal 7 的 TB Megamenu 行为

javascript - 使用正则表达式从文本中获取字符串

regex - nginx-将特定路径重定向到另一个域

javascript - 为什么这个 JavaScript 广告只有在 &lt;iframe&gt; 中加载时才会被裁剪?

javascript - 如果语句不起作用我与变量进行比较

javascript - 调用服务方法后 AngularJs 更新指令

jquery - 将鼠标悬停在 jquery 上以查看子级元素

javascript - 如何使用子元素以外的元素作为拖动 handle ?

jQuery Mobile slider 离散化和小数位数

javascript - RegExp 不是确定性的吗?