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

PHP正则表达式匹配字母数字和连字符(不是空格)用作子域

燕鸿波
2023-03-14

我有以下正则表达式,我将其解释为一种模式,它将匹配仅由字母数字字符和连字符组成的字符串。

if (preg_match('/[A-Za-z0-9-]/', $subdomain) === false) {
    // valid subdomain
}

问题是这个正则表达式也匹配空格,这在子域名中显然是不可取的。

对于加分,这是验证子域名的合适方法吗?我不确定哪些特殊字符是允许的,但我想我会保持简单,只允许连字符。还有什么我需要检查的吗?例如,最大长度?

共有1个答案

程吕恭
2023-03-14

您的模式匹配ASCII字母或数字或字符串中的任何位置,如果找到,则返回true。E、 如果传递$#$%,则返回true$

匹配仅由字母数字字符和连字符组成的字符串的模式是

if (preg_match('/^[A-Za-z0-9-]+$/D', $subdomain)) {
    // valid subdomain
}

详情:

  • ^-字符串的开始
  • [A-Za-z0-9-]-1个或多个字符,它们是ASCII字母、数字或-
  • $-字符串结束
  • /D-一个PCRE_DOLLAR_ENDONLY修饰符,使$锚在字符串的最末尾匹配(不包括字符串中最后换行符之前的位置)。
 类似资料:
  • 其中,我需要包括连字符和空格。 这意味着还必须可以输入值“”。

  • 我试图匹配包含字母数字、连字符、下划线和空格的字符串。 连字符、下划线、空格和数字是可选的,但第一个和最后一个字符必须是字母。 例如,这些都应该匹配: 我试过这个: 但它在开始/结束时与空格、下划线或连字符匹配,但它应该只允许在两者之间。

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

  • 我试图构建一个正则表达式来匹配这些字符串: jfldfldf ldjfdlf ldfl ldfldf 8998 dfjldjf 89dfdf DF899 ljdljf[dff]DFDFDF(fdfdf)898 要求: 字符串应仅以任何小写或大写字符(A-Z)开头 它可能包含空格或括号() 不允许任何其他特殊字符 我尝试了,但它仍然接受其他特殊字符。

  • 问题内容: 如果我有一个类似“ 11E12C108N”的字符串,该字符串是字母组和数字组的串联,那么如何在没有分隔符的情况下拆分它们? 例如,我希望得到的拆分为: 我现在有这个。 这给了我: 我可以一次完成原始正则表达式的完全分割吗?不必在中间令牌上再次运行正则表达式? 问题答案: 使用以下正则表达式,并获取所有匹配项的列表。那就是您要寻找的。 在Java中,我认为代码如下所示:

  • 问题内容: 我需要将Python中的一个表达式与仅匹配偶数个字母出现的正则表达式进行匹配。例如: 偶数应匹配。 问题答案: 试试这个正则表达式: 并且如果s不需要是连续的: