我想要一个正则表达式,防止符号,只允许字母和数字。下面的正则表达式工作得很好,但它不允许单词之间有空格。
^[a-zA-Z0-9_]*$
例如,当使用这个正则表达式时,“HelloWorld”是可以的,但“HelloWorld”不匹配。
我如何调整它允许空格?
我想要一个正则表达式,防止符号,只允许字母和数字。下面的正则表达式工作得很好,但它不允许单词之间有空格。
^[a-zA-Z0-9_]*$
例如,当使用这个正则表达式时,“HelloWorld”是可以的,但“HelloWorld”不匹配。
我如何调整它允许空格?
当前回答
这是我的正则表达式 : @"^(?=.{ 3、15 }$)(?:(?:\ p {L} | \ p {N })[._()\[\]-]?)*$"
我只是在*之前的正则表达式的末尾添加了([\w]+)
@ ^(?”=(3.15%。 }$)(?:(?:\ p (L) | \ p (N })[._()\[\]-]?)([\ w] +) *美元”
现在字符串中允许有空格。
其他回答
如果你正在使用JavaScript,那么你可以使用这个正则表达式:
/^[a-z0-9_.-\s]+$/i
例如:
/^[a-z0-9_.-\s]+$/i.test("") //false
/^[a-z0-9_.-\s]+$/i.test("helloworld") //true
/^[a-z0-9_.-\s]+$/i.test("hello world") //true
/^[a-z0-9_.-\s]+$/i.test("none alpha: ɹqɯ") //false
这个正则表达式的唯一缺点是字符串完全由空格组成。" "也会显示为true。
我假设您不需要前导/尾随空格。这意味着你必须把正则表达式分成“第一个字符”,“中间的东西”和“最后一个字符”:
^[a-zA-Z0-9_][a-zA-Z0-9_ ]*[a-zA-Z0-9_]$
或者如果你使用类似perl的语法:
^\w[\w ]*\w$
另外:如果你故意措辞你的正则表达式,它也允许空字符串,你必须使整个事情可选:
^(\w[\w ]*\w)?$
如果你想只允许单个空格字符,它看起来有点不同:
^((\w+ )*\w+)?$
这个匹配0..N个单词后面跟着一个空格,加上一个没有空格的单词。并使整个东西可选,允许空字符串。
一种可能是将空格添加到您的字符类中,就像acheong87建议的那样,这取决于您对模式的严格程度,因为这也将允许字符串以5个空格开头,或者仅由空格组成。
另一种可能是定义一个模式:
我将使用\w,这是在大多数正则表达式口味与[a-zA-Z0-9_]相同(在一些是基于Unicode的)
^\w+( \w+)*$
这将允许至少一个单词的序列,并且单词用空格分隔。
^匹配字符串的开头
\w+匹配至少一个单词字符的序列
(\w+)*是一个重复0次或更多次的组。在组中,它期望一个空格后面跟着至少一个单词字符的系列
$匹配字符串的结尾
这在一开始就不允许有空间。但允许单词之间有空格。还允许在单词之间使用特殊字符。一个用于FirstName和LastName字段的良好正则表达式。
\w+.*$
只适用于字母:
^([a-zA-Z])+(\s)+[a-zA-Z]+$
对于字母数字值和_:
^(\w)+(\s)+\w+$