正则表达式的客户端验证 - 允许在中间但不是开始和结束的空格

时间:2017-05-02 17:33:53

标签: javascript jquery regex validation

我允许这个正则表达式的空格如下:

的javascript:

@Configuration
@Import({MvcConfig.class})
public class AnotherConfig  {
....
}

...但我想在开始和结束时不允许它。这很有效:

的javascript:

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

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

我已经发现了这一点,允许在开头和结尾有空格

的javascript:

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

但它允许所有角色......我如何匹配我的目标正则表达式?我试过了......但它已经没有用了......

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

1 个答案:

答案 0 :(得分:1)

使用

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$))之后找到空格,则.*否定前瞻将使匹配失败({ {1}})。