【问题标题】:regex: match any word with numbers正则表达式:匹配任何带有数字的单词
【发布时间】:2019-01-23 18:28:23
【问题描述】:

我已经检查了 stackoverflow,但没有找到可以使用的解决方案。 我需要一个正则表达式来匹配包含数字的任何单词(我的意思是完整空格之间的任何单词)。它可以是字母数字 AB12354KFJKL,或日期 11/01/2014,或中间带连字符的数字,123-489-568,或只是普通的普通数字 123456789 - 但它无法匹配任何没有数字的东西。 谢谢,

在示例文本中我想要的更好的示例(粗体):

ABC1 ABC 23-4787 ABCD 4578 ABCD 11/01/2014 ABREKF

【问题讨论】:

    标签: regex


    【解决方案1】:

    一定有更好的东西,但我认为这应该可行:

    \S*\d+\S*
    

    \S* - 零个或多个非空白字符

    \d+ - 一位或多位数字

    \S* - 零个或多个非空白字符

    【讨论】:

    • 谢谢,但这个正则表达式的问题在于它选择了所有内容,包括空格、没有数字的单词,这是我不想要的......
    • 是否有您想要或不想要的特定字符集?
    • 立即尝试:我已从 . 更改为 \S 以仅捕获非空白字符。
    【解决方案2】:

    使用此前瞻:

    (?=\D*\d)
    

    这断言字符串包含任意数量的非数字字符 (\D),后跟一个数字。

    如果您想匹配/捕获字符串,只需将.* 添加到正则表达式:

    (?=\D*\d).*
    

    参考:http://www.rexegg.com/regex-lookarounds.html

    【讨论】:

    • 我理解你的逻辑,但这是一个没有任何捕捉任何角色的前瞻?
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多