所以我正在尝试做一个相对简单的 php 正则表达式来检查字符串是否包含以下字符之一:.,%$@/0123456789 但我也想检查它是否包含双反斜杠(我不希望它评估如果它只包含一个反斜杠,则为真),我不知道该怎么做。任何帮助,将不胜感激 :)
这是我到目前为止使用的:
preg_match('/[.,%$@\/0-9]/',$string)
我不知道如何在双反斜杠中包含“\\\\”。
提前致谢!
您只是在寻找您的字符集或双反斜杠,对吗?所以:
preg_match('/[.,%$@\/0-9]|\\\\/',$string)
where|
表示“或”。
如果字符串必须由您给定的字符组成,而且还必须包含双反斜杠,但不能包含单个反斜杠,那么据我所知,您将需要 3 个正则表达式。
if (
(!preg_match('/[^.,%$@\/\\0-9]/', $string)) // fails if the string contains a character that is not allowed
&&
! (
preg_match('/\\/', $string) // contains at least one backslash
&&
!preg_match('/\\{2}/') // succeeds if the string contains a double-backslash
)
) { /* code */ }
如果您尝试将所有规则组合到一个正则表达式中,那么您将度过一段糟糕的时光。
还有一个缺点是,一旦字符串包含双反斜杠,它就可以在任何地方有额外的反斜杠,即'12\3456\78\90' 是有效的。如果这是可能的,但在输入中是不允许的,那么您可能需要考虑一个严格检查格式的正则表达式,而不仅仅是测试有效字符。