我有下一个代码,我试图根据正则表达式知道字符串是否有效。 我正在尝试仅验证遵循下一个序列的字符串。
lettersOrNumbersAndunderDashes=lettersOrNumbersAndUnderdashes
但如果有垂直条,则可以重复该序列。
例如parameter1=value1|parameter2=value2|parameterN=valueN
if (preg_match("/((^[A-Za-z0-9_]+=[A-Za-z0-9_]+)\|?)/m", "perPd_asd=as_3_4d|asdas=asdasd"))
return 'Valid';
return 'Invalid';
我认为我错过了某些东西或构建错误的正则表达式。
答案 0 :(得分:0)
参数名称可能从数字?
开始您需要更多正则表达式的测试用例,例如:
0=somevalue
param=value|
one_more_param=@#$%^|some_param=some-value
_=VALUE|abc=***
a=1|b=2|c=3
param=0|param=1
我的解决方案是:
^(([_A-Za-z][A-Za-z0-9_]*=[^\|=]+)\|)*([_A-Za-z][A-Za-z0-9_]*=[^\|=]+)$
答案 1 :(得分:0)
你做的错误是在模式的开头放置一个^
,这意味着它只会在文本位于字符串的开头时匹配。这应该解决:
if (preg_match("/(([A-Za-z0-9_]+=[A-Za-z0-9_]+)\|?)/m", "perPd_asd=as_3_4d|asdas=asdasd"))
return 'Valid';
return 'Invalid';