regex - 正则表达式 Powershell
问题描述
我想要一个由正则表达式管理的变量,我想要一个以 4 个字母开头后跟 4 个数字的永久代码:对于正则表达式,我发现: \D{4}\d{4}
这是正确的,我不知道如何有一个变量仅内容 4 个字母和 4 个数字。
$permanentCode ="LETT7654"
if($permanentCode=\D{4}\d{4}){
"valid code"
}
else {
"invalid code"
}
解决方案
首先,语法错误。赋值运算符后面的字符串必须用引号括起来'LETT7654'
,并且'\D{4}\d{4})'
。
RegEx 用于匹配而不是分配。但是,您可以使用 RegEx 获取内容并将这些结果分配给变量。
您还在 if 语句中使用了赋值运算符=
与比较-eq
。正则表达式当然需要工作,因为\d
, 将匹配字符串中的任何 4 个连续数字,这同样适用于 \D。
Clear-Host
$TestCode = {
if($PermanentCode -match '(\D{4}\d{4})')
{'valid code'}
else {'invalid code'}
}
$PermanentCode = 'LETT7654'
& $TestCode
$PermanentCode = 'LE7654'
& $TestCode
$PermanentCode = 'LETTZ7654'
& $TestCode
$PermanentCode = 'LETT654'
& $TestCode
$PermanentCode = 'LETT7654000000000'
& $TestCode
# Results
<#
valid code
invalid code
valid code
invalid code
valid code
#>
如果您真的打算将其限制$PermanentCode
为仅 4 个字符和 4 个数字;所以,总长度最大为 8。那么,这样的事情应该做
Clear-Host
$TestCode = {
if($PermanentCode -match '^[a-zA-Z]{3}\w\d{4}\b')
{'valid code'}
else {'invalid code'}
}
$PermanentCode = 'LETT7654'
& $TestCode
$PermanentCode = 'LE7654'
& $TestCode
$PermanentCode = 'LETTZ7654'
& $TestCode
$PermanentCode = 'LETT654'
& $TestCode
$PermanentCode = 'LETT7654000000000'
& $TestCode
$PermanentCode = 'ZZZZ7654'
& $TestCode
# Results
<#
valid code
invalid code
invalid code
invalid code
invalid code
valid code
#>
推荐阅读
- android - 在 API 级别 23+ 上准备的媒体播放器失败
- vue.js - 从数组数据初始化 for 循环中的组件
- sharepoint - 如何从 Sharepoint 在线下载文件
- azure - 我收到包含多个已处理数据的下游消息
- r - ggplot2按年叠加折线图?
- c# - 如何使用 Entity Framework 在 SQL Azure 中平均 DateTime 值?
- forecasting - TSLM 和固定数据
- continuous-delivery - 在 Continuum 中,如何计算风险和高风险文件并将其包含在“风险”指标中?
- excel - 将名称和日期添加到新选项卡
- c# - 从我的服务器下载 zip 文件时遇到问题