正则表达 - 我的错误是什么?

Lil*_*sey 1 regex

我想匹配任何序列或数字,或文字:na.我在用:

"^\d*|na$"
Run Code Online (Sandbox Code Playgroud)

数字正在匹配,但不是na.

我的错是什么?

更多信息:我在aspnet c#中的文本框的正则表达式验证器中使用它.

空白条目没问题.

Chr*_*son 9

这是因为正在读取表达式(假设PCRE):

"^\d*" OR "na$"
Run Code Online (Sandbox Code Playgroud)

一些括号会在jiff中处理.选择(根据您的需要):

"^(\d+|na)$"    // this will capture the number or na
"^(?:\d+|na)$"  // this one won't capture
Run Code Online (Sandbox Code Playgroud)

干杯!


Gum*_*mbo 6

|运营商具有比锚更高的优先级^$.所以表达式^\d*|na$意味着匹配^\d*na$.试试这个:

^(\d*|na)$
Run Code Online (Sandbox Code Playgroud)

要么:

^\d*$|^na$
Run Code Online (Sandbox Code Playgroud)