我想知道是否存在一个正则表达式表达式来评估格式如下的字符串:“ 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 }}"
答案 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