【问题标题】:regular expression which will allow string "site 6 camp 101"允许字符串“site 6 camp 101”的正则表达式
【发布时间】:2018-02-14 10:20:28
【问题描述】:

寻找允许“site 6 camp 101”或“site6 camp 101”字空格数单词或空格或数字向前的正则表达式

允许

网站 6
Site6 camp101
站点 6 营地 101

现在允许

Site camp 

在第一个单词和空格之后只允许数字。我尝试了以下代码:

^[A-Za-z]+[0-9 ]+[A-Za-z 0-9]+

没有按预期工作

【问题讨论】:

标签: javascript java regex


【解决方案1】:

将我的 cmets 翻译成答案。

你可以使用这个正则表达式:

^[A-Za-z]+\s*[0-9]+(?:[ \t]+[a-zA-Z]+\s*[0-9]+)?$

RegEx Demo

  • \s* 在第一个 [0-9]+ 之前使第一个空格可选
  • (?...)? 中的正则表达式是可选匹配项。

【讨论】:

    【解决方案2】:

    在“Site”和“6”之间定义一个可选空格,并从[0-9 ] 中删除空格:

        ^[a-zA-Z]+ ?[0-9]+[a-zA-Z\d ]+
    --- Here -----^
    

    这匹配:

    • Site6 camp101

    • 站点 6 营地 101

    而且不匹配:

    • 营地

    同样的事情更短,使用\w(任何字母数字)和\d(仅限数字):

    ^\w+ ?\d+[\w ]+
    

    根据您的新要求进行编辑

    既然正则表达式也应该允许some6,那么在这之后做什么(可选)? :

    ^\w+ ?\d+([\w ]+)?
    

    匹配:

    • 站点 6

    • Site6 camp101

    • 站点 6 营地 101

    不匹配:

    • 工地营地

    【讨论】:

    • 您好 Jeremy,这是唯一有效的问题是它不允许 site6 抱歉,我应该在问题本身中提及。
    • 换句话说,在site6或site 6之后不应该有任何单词
    猜你喜欢
    • 2012-08-02
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多