【问题标题】:regex for exactly one capital letter and one digit within a certain range正则表达式在一定范围内恰好是一个大写字母和一个数字
【发布时间】:2021-03-25 09:08:52
【问题描述】:

我正在尝试编写验证网格坐标的表单值的 javascript。

网格有 A 到 H 和 1 到 8,坐标写成一个字母后跟一个数字,例如。 “A1”、“H8”、“B6”、“F3”。

谁能给我一个正则表达式来排除该范围内的坐标以外的任何内容。

我尝试了以下方法:

/^[A-H][1-8]$/

基于我对正则表达式的了解非常有限,但还没有成功

【问题讨论】:

  • but that hasn't worked out - 请编辑问题以解释您的期望和您所看到的(带有相关的 JS 代码/示例)。该正则表达式执行所描述的操作 - 匹配仅包含一个字母 A 到 H 后跟一个数字 1 到 8 的字符串 - 所以如果它“不起作用”,则问题不在于正则表达式本身。
  • 您能否更具体地说明“还没有解决”的意思?您的 RegExp 看起来是正确的,因此了解它是如何失败的(根本不匹配、不正确的匹配等)以及查看使用它的代码可能会很有用。
  • 正则表达式表示:查找以 (^) 开头的行,其中大写字母在“A”到“H”([A-H]) 范围内,后跟一个数字"1" 到 "8" ([1-8]) 然后字符串必须结束 ($)

标签: javascript html regex


【解决方案1】:

您的正则表达式看起来是正确的,您可能希望通过这种方式使其更加健壮: /^\s*[A-H][1-8]\s*$/

这应该匹配“A6”或“B7”之类的内容,即使开头或结尾有空格。

测试正则表达式的一个非常有用的工具是:https://regex101.com/

【讨论】:

  • 这个很好用,我也需要这样的东西,谢谢
  • @RodolfoSccani:我认为i-flag 使它不区分大小写!但一定要有大写字母!
  • @AndyU。你是对的,我已经纠正了。谢谢
【解决方案2】:

为了确保您的字符串以“A”-“H”开头,后跟“1”-“8”,^[A-H][1-8] 是正确的,但可能会有更多内容。所以你可以写一个.* 来允许一些。要获取此内容,请将其写在( 和) 之间以建立一个群组。

^[A-H][1-8](.*)$

如果一行匹配,您可以从第一组$1 中获取范围后面的内容。请确保您的正则表达式区分大小写!

如果您想防止与其他范围匹配的行(例如“B4 foo Bar bAz D7 xxx”,您需要环顾四周:

^[A-H][1-8]((?:(?![A-H][1-6]).)*)$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多