是否有一种方法可以仅使用Regex.IsMatch来匹配具有数字的字符串?

时间:2019-07-02 15:21:11

标签: c# regex match

我想知道是否存在一个正则表达式表达式来评估格式如下的字符串:“ XXYYYY”,其中XX是任何字母,而YYYY是任何数字。

我使用此代码来完成该操作,尽管我确信不使用Substring和仅使用Regex.IsMatch会有更好的方法。 谢谢!

- hosts: localhost
  tasks:
    - name: set variables
      set_fact:
        vault_token: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          SOMETOKEN
    - name: get Configuration token from Vault
      set_fact:
         vault_result: "{{ lookup('hashi_vault', 'secret=secret/data/all/default/token token={{ vault_token }} url=https://address validate_certs=False' ) }}"
    - name: parse result
      set_fact:
         TOKEN: "{{ vault_result.data.token }}"
      register: TOKEN
    - name: show result
      debug:
        msg: "{{ TOKEN }}"

5 个答案:

答案 0 :(得分:2)

您可以使用此^\p{L}{2}\p{Nd}{4}$

对其进行测试

解释

 ^             # BOS
 \p{L}{2}      # Two letters
 \p{Nd}{4}     # Four number digits
 $             # EOS

答案 1 :(得分:1)

您可以使用单个正则表达式来测试2个字母和4个数字的正确性:

if (Regex.IsMatch(ValueString, "^[a-zA-ZñÑ\s]{2}[\d]{4}$");

答案 2 :(得分:1)

只需将量词和数字的模式添加到现有模式中即可:

return Regex.IsMatch(ValueString, @"^[a-zA-ZñÑ]{2}[0-9]{4}$");

{2}的意思是“恰好是前一个表达式的2”。使用[0-9]而非\d限制了与拉丁十进制数字匹配的数字范围(\d+还将包括其他字母的数字)

答案 3 :(得分:0)

另一个解决方案:

  string[] data =
  {
    "AB1234", // True
    "XA3456", // True
    "3d34hg", // False
    " .1234", // False
    "ñÑ1234", // True
    "ôà1234", // True 
  };

  foreach (bool result in data.Select(s => Regex.IsMatch(s, @"^[^\d\s\W]{2}\d{4}$")))
  {
    Console.WriteLine(result);
  }

答案 4 :(得分:0)

Pattern : ^\w{2}\d{4}$
Match groups:
1.  df5455

https://rubular.com/r/031g7m7uTE5MvU