如何检查 RegEx 是否匹配所有目标字符串?

How to check if a RegEx matches all the target string?

我需要检查正则表达式模式是否与所有目标字符串匹配。

例如,如果模式是 '[0-9]+':

代码应如下所示:

uses
  System.RegularExpressions;

begin
  if(TRegEx.IsFullMatch('123' + sLineBreak, '[0-9]+'))
  then ShowMessage('Match all')
  else ShowMessage('Not match all');
end;

我试过 TRegEx.Match(...).SuccessTRegEx.IsMatch 都没有成功,我想知道是否有一种简单的方法来检查模式是否与整个目标字符串匹配。

我也试过使用 ^ - start of line$ - end of line 但没有成功。

uses
  System.RegularExpressions;

begin
  if(TRegEx.IsMatch('123' + sLineBreak, '^[0-9]+$'))
  then ShowMessage('Match all')
  else ShowMessage('Not match all');
end;

Here 你可以找到一个在线测试,证明如果目标字符串以新行结尾,即使使用 start/end 行,正则表达式仍然匹配。

var str = '123';
var sLineBreak = '\n';

console.log(str.match(/^\d+$/)); //123
console.log((str + 'b').match(/^\d+$/)); //123b
console.log((str + sLineBreak).match(/^\d+$/)); //123\n

您可以使用:^\d+$

^ 字符串开头

\d+至少一位或多位数字

$ 字符串结尾

确保整个字符串匹配:

\A[0-9]+\z

说明

--------------------------------------------------------------------------------
  \A                       the beginning of the string
--------------------------------------------------------------------------------
  [0-9]+                   any character of: '0' to '9' (1 or more
                           times (matching the most amount possible))
--------------------------------------------------------------------------------
  \z                       the end of the string

另外,参见 Whats the difference between \z and \Z in a regular expression and when and how do I use it?