我需要一个在[a-zA-Z0-9_& -]
允许字符之间的空格,但不允许空格。
允许的输入示例:
group1
,group 1
,Group1
,Group1 & Group2
,group1_Group2
,group1_group2
我输入类型的html是:
<input type="text" required name="name" pattern="[a-zA-Z0-9_& -]+" placeholder="Group Name" />
问题在于单个空白空间,如果我放置单个空白空间,它将通过。如果我删除正则表达式模式中的空格并变为:"[a-zA-Z0-9_&-]+"
,则用户无法在字符串之间输入空格,如group 1
,我应该如何形成模式?
答案 0 :(得分:3)
使用以下模式:
[a-zA-Z0-9_&-]+([ ]?[a-zA-Z0-9_&-]+)*
此模式根据您的定义匹配单个术语,后跟任意数量的可选空格和强制术语。
答案 1 :(得分:2)
试试这个正则表达式:
^(?!^ +$)([\w -&]+)$
<强>解释强>
^
- 字符串的开头(?!^ +$)
- 否定前瞻,验证字符串不应只包含字符串开头和结尾之间的1个或多个空格([\w -&]+)
- 捕获[a-zA-Z0-9_ &-]
$
- 字符串结尾答案 2 :(得分:1)
您可以使用:
string pattern = @"[\w&-]+[\w\s&-]*";
Regex regx = new Regex(pattern);
Match m = regx.Match("group1 & group2");
string res = m.Value;
说明:
\ w:匹配任何字母数字字符,这将包括所有字符,数字和下划线
[]:定义一系列char
+:表示一次或多次出现
*:表示零次或多次出现
\ s:任何空格
[\ w&amp; - ]:表示一系列字母数字字符,或&amp;或 -
[\ w&amp; - ] +:表示范围应该发生一次或多次,因此确保不是 全白空间
[\ w \ s&amp; - ] *:表示零或多次出现字母数字,空白和&amp;或 -