【问题标题】:Regex for Mr, Miss, Mrs and Ms先生、小姐、夫人和女士的正则表达式
【发布时间】:2014-09-09 07:35:02
【问题描述】:

有没有办法可以找到是否输入了这些字符串。我想看看用户输入的是“先生”、“小姐”、“夫人”还是“女士”。

我尝试了/^(Miss|Mr|Mrs|Ms)$/,但无济于事。

上下文是我有一个文本框,用户应该在其中输入他们的标题。

我希望用户只输入“先生”、“小姐”、“夫人”和“女士”。如果他们输入其他任何内容,则抛出错误。

【问题讨论】:

  • 博士、牧师、先生、勋爵、夫人、女士……这可能是那些需要更多上下文帮助的问题之一
  • 为我工作...rubular.com/r/WO7fLbcTMW
  • 这是一个测试正则表达式的好工具 - derekslager.com/blog/posts/2007/09/…
  • 我在 ASP.net 中使用 RegularExpressionValidator 来检查用户是否输入了他们的标题权限。如果未输入 Miss/Mr/Mrs/Ms,则抛出错误。 UMM 有没有办法与我做的那个正则表达式相反?
  • 使用下拉菜单而不是文本框。

标签: regex


【解决方案1】:

也许您需要做的就是去掉末尾的$ 并将其替换为\b,这样如果我输入“Mr John”,您就可以识别它。

示例链接:http://regexr.com/39faa

【讨论】:

  • 我认为他需要移除两个锚点。
  • 这实际上取决于它是匹配行首还是任何地方的正则表达式。如果在任何地方 ^ 也应该替换为 \b
【解决方案2】:

您的正则表达式的更紧凑版本可能是:

/^(M(?:is)?s|(?:Mrs?))/

看看this demo

正如另一个答案的评论中提到的,如果搜索字符串也可以位于字符串的中间,则从模式中删除 ^

【讨论】:

  • 但有时少即是多,我想我更喜欢列出选项的那个。
【解决方案3】:

试试这个

\bM(?:rs?|s|iss)\b

Demo

【讨论】:

  • 这将匹配 MMis
  • @Biffen 答案已更新
【解决方案4】:
/^(Mr|Mrs|Mr|Dr|Er)\.[A-Za-z]+$/;

这里^(Mr|Mrs|Mr|Dr|Er) 将检查字符串的开头。

\. 允许在 Title 后面加一个点

然后可以有任何单词或字母这样的单词数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2014-12-09
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多