首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等价正则表达式

等价正则表达式
EN

Stack Overflow用户
提问于 2014-01-29 20:00:19
回答 2查看 496关注 0票数 0

我有一个正则表达式:

代码语言:javascript
复制
/^(?:'[A-z](([\._\-][A-z0-9])|[A-z0-9])*[a-z0-9_]*')$/

我正试着建造一个类似的,但仍然没有成功。

有关更多信息,它是用户名的正则表达式。以下是规则:

  • 应该以字母开头
  • 可以有。-或在用户名中间(如john__、john.m或kate-7)
  • 不能以。或-,但它可以以几个_(如matt__)结尾
  • 可以以数字结尾(如chloe77)

编辑:

我使用Codeigniter regex_match,它有一个bug,不接受管道。因此,等效的正则表达式不应该有管道。

我很感谢你的帮助。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-29 20:05:40

代码语言:javascript
复制
^(?:[a-zA-Z](?:[a-zA-Z0-9._-]*[a-zA-Z0-9_]+)?)$

http://regex101.com/r/jX2wY5

票数 1
EN

Stack Overflow用户

发布于 2014-01-29 20:04:00

假设您使用的是PCRE (或大部分)兼容语言,请尝试如下:

代码语言:javascript
复制
/^([A-Z][\w.-]*[A-Z_\d]|[A-Z])$/i

http://regex101.com/r/hS7mB9

在javascript中:

代码语言:javascript
复制
var str = "john.m"; //example
console.log((/^([A-Z][\w.-]*[A-Z_\d]|[A-Z])$/i).test(str));

在php中:

代码语言:javascript
复制
$str = "john.m"; //example
if (!preg_match("/^([A-Z][\w.-]*[A-Z_\d]|[A-Z])$/i", $str);

没有|

代码语言:javascript
复制
$str = ".John.m";
if (preg_match("/^[A-Z]$/i", $str))
{
    //check if it's one letter
}
else if (preg_match("/^[A-Z][\w.-]*[A-Z_\d]/i", $str))
{
    //if not, check if it fits the other format
}
else
{
    //we can assume that it's now failed the test
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21441363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档