当前位置: 首页 > 知识库问答 >
问题:

匹配字母数字、连字符、下划线和空格字符串的正则表达式

南宫森
2023-03-14

我试图匹配包含字母数字、连字符、下划线和空格的字符串。

连字符、下划线、空格和数字是可选的,但第一个和最后一个字符必须是字母。

例如,这些都应该匹配:

abc
abc def
abc123
ab_cd
ab-cd

我试过这个:

^[a-zA-Z0-9-_ ]+$

但它在开始/结束时与空格、下划线或连字符匹配,但它应该只允许在两者之间。

共有3个答案

鲁阳焱
2023-03-14

根据您对包含空格、连字符、下划线和字母数字字符的要求,您可以为[a-zA-Z0-9]使用速记字符集。使用连字符转义,因为它通常用于字符集内的字符范围。

为了否定开头和结尾的空格和连字符,我使用了[^s \-]

所以完整的正则表达式变成了[^\s\-][\w \-] [^\s\-]

这是工作演示。

郤望
2023-03-14

检查这个在小提琴中工作http://refiddle.com/refiddles/56a07cec75622d3ff7c10000

这将解决问题

 ^[a-zA-Z]+[a-zA-Z0-9-_ ]*[a-zA-Z0-9]$
何松
2023-03-14

使用用字母字符包装的简单字符类:

^[a-zA-Z]([\w -]*[a-zA-Z])?$

这与以字母开头和结尾的输入相匹配,只包括一个字母。

正则表达式中有一个错误:字符中间有连字符,这使得它成为一个字符范围。ie是指“介于9和9之间的每个字符。

如果要在字符类中使用文字破折号,请将其放在第一位或最后一位,或者对其进行转义。

此外,更喜欢使用\w“单词字符”,它是所有字母和数字以及下划线,而不是[a-zA-Z0-9_]-它更容易输入和阅读。

 类似资料:
  • 其中,我需要包括连字符和空格。 这意味着还必须可以输入值“”。

  • 我希望有一个正则表达式来检查字符串是否包含大小写字母、数字、下划线以及字符限制。这些是字符串中唯一允许的类型。

  • 我需要在以下条件下使用C#中的正则表达式匹配字符串: 整个字符串只能是字母数字(包括空格) 最大长度不得超过15个字符(包括空格) 首先 如果这些先决条件中的任何一个被打破,比赛就不会进行。 以下是我目前掌握的情况: 下面是一些应该匹配的测试字符串: 堆栈溢出 伊姆特最伟大的 一个 超人23s 一二三 还有一些不应该匹配的(注意空格): 堆叠 [double_space] 溢流岩石 23你好 这是

  • 所有: 我想做的是使用正则表达式匹配一个只允许[a-Za-z0-9_-]的字符串,格式应该是: 仅从[A-Za-z0-9]开始,然后是[A-Za-z0-9_-]。中间可能有[_-],但如果有,则只允许一次(两个_-,但每个都只有一次机会),并以[A-Za-z0-9]结束。 我只知道如何匹配字母数字字符、破折号和下划线,但不知道如何限制它们的出现时间。 谢谢

  • 我有以下正则表达式,我将其解释为一种模式,它将匹配仅由字母数字字符和连字符组成的字符串。 问题是这个正则表达式也匹配空格,这在子域名中显然是不可取的。 对于加分,这是验证子域名的合适方法吗?我不确定哪些特殊字符是允许的,但我想我会保持简单,只允许连字符。还有什么我需要检查的吗?例如,最大长度?

  • 我无法找到一个合适的正则表达式来匹配任何不以某种条件开头和结尾的字符串。 但用这个我不能实现面具‘。正则表达式结尾的字符。 多谢了。