如何编写正则表达式匹配既含数字又含字母的字符串?

2026-04-10 06:361阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计548个文字,预计阅读时间需要3分钟。

如何编写正则表达式匹配既含数字又含字母的字符串?

题目+我希望能够使用单个正则表达式表达式(如果可能)要求字符串适应以下条件:A-Za-z0-9_但不允许:+只包含数字或/和符号的字符串+以符号开头或结尾的字符串+相邻的多个符号+有效+test_0123+t0e1s2t

我希望能够使用单个正则表达式(如果可能)要求字符串适合[A-Za-z0-9_]但不允许:

如何编写正则表达式匹配既含数字又含字母的字符串?

>只包含数字或/和符号的字符串.
>以符号开头或结尾的字符串
>彼此相邻的多个符号

有效

> test_0123
> t0e1s2t3
> 0123_test
> te0_s1t23
> t_t

无效

> t__t
> ____
> 01230123
> _0123
> _test
> _test123
> test_
> test123_

规则的原因

这样做的目的是过滤我正在处理的网站的用户名.出于特定原因,我已达到规则.

>仅包含数字和/或符号的用户名可能会导致路由和数据库查找出现问题. / users /#{id}的路由允许id为用户的id或用户的名称.所以名称和ID不应该碰撞.
> _test看起来很奇怪,我不相信它是有效的子域名,即_test.example.com
>我不喜欢t__t作为子域的外观.即t__t.example.com

这完全符合您的要求:

/\A(?!_)(?:[a-z0-9]_?)*[a-z](?:_?[a-z0-9])*(?<!_)\z/i

>至少一个字母字符(中间的[a-z]).
>不以下划线开头或结尾(开头和结尾的(?!_)和(?<!_)).
>在字母字符前后可以包含任意数量的数字,字母或下划线,但每个下划线必须至少用一个数字或字母(其余部分)分隔.

编辑:事实上,由于正则表达式的其余部分是如何工作的,你可能甚至不需要前瞻/外观?第一个?:括号将在字母数字之后才允许下划线,第二个?:括号赢了“ t允许下划线除非它在字母数字之前:

/\A(?:[a-z0-9]_?)*[a-z](?:_?[a-z0-9])*\z/i

应该工作正常.

本文共计548个文字,预计阅读时间需要3分钟。

如何编写正则表达式匹配既含数字又含字母的字符串?

题目+我希望能够使用单个正则表达式表达式(如果可能)要求字符串适应以下条件:A-Za-z0-9_但不允许:+只包含数字或/和符号的字符串+以符号开头或结尾的字符串+相邻的多个符号+有效+test_0123+t0e1s2t

我希望能够使用单个正则表达式(如果可能)要求字符串适合[A-Za-z0-9_]但不允许:

如何编写正则表达式匹配既含数字又含字母的字符串?

>只包含数字或/和符号的字符串.
>以符号开头或结尾的字符串
>彼此相邻的多个符号

有效

> test_0123
> t0e1s2t3
> 0123_test
> te0_s1t23
> t_t

无效

> t__t
> ____
> 01230123
> _0123
> _test
> _test123
> test_
> test123_

规则的原因

这样做的目的是过滤我正在处理的网站的用户名.出于特定原因,我已达到规则.

>仅包含数字和/或符号的用户名可能会导致路由和数据库查找出现问题. / users /#{id}的路由允许id为用户的id或用户的名称.所以名称和ID不应该碰撞.
> _test看起来很奇怪,我不相信它是有效的子域名,即_test.example.com
>我不喜欢t__t作为子域的外观.即t__t.example.com

这完全符合您的要求:

/\A(?!_)(?:[a-z0-9]_?)*[a-z](?:_?[a-z0-9])*(?<!_)\z/i

>至少一个字母字符(中间的[a-z]).
>不以下划线开头或结尾(开头和结尾的(?!_)和(?<!_)).
>在字母字符前后可以包含任意数量的数字,字母或下划线,但每个下划线必须至少用一个数字或字母(其余部分)分隔.

编辑:事实上,由于正则表达式的其余部分是如何工作的,你可能甚至不需要前瞻/外观?第一个?:括号将在字母数字之后才允许下划线,第二个?:括号赢了“ t允许下划线除非它在字母数字之前:

/\A(?:[a-z0-9]_?)*[a-z](?:_?[a-z0-9])*\z/i

应该工作正常.