如果值是以下任何组合,我在检查PHP时遇到问题
几个例子:
我想我需要一个正则表达式,因为当一个给定字符串中包含其他字符而不是上面提到的字符时,我需要抛出一个错误.
pol*_*nts 170
你想要的模式是这样的(在rubular.com上看到它):
^[a-zA-Z0-9_.-]*$
Run Code Online (Sandbox Code Playgroud)
说明:
^ 是线锚的开始$ 是线锚的结束[...] 是一个字符类定义* 是"零或多"重复请注意,文字短划线-是字符类定义中的最后一个字符,否则它具有不同的含义(即范围).该.也有人物类定义之外的不同的含义,但里面,它只是一个文字.
这是一个片段,展示如何使用此模式:
<?php
$arr = array(
'screen123.css',
'screen-new-file.css',
'screen_new.js',
'screen new file.css'
);
foreach ($arr as $s) {
if (preg_match('/^[\w.-]*$/', $s)) {
print "$s is a match\n";
} else {
print "$s is NO match!!!\n";
};
}
?>
Run Code Online (Sandbox Code Playgroud)
以上打印(如ideone.com上所示):
screen123.css is a match
screen-new-file.css is a match
screen_new.js is a match
screen new file.css is NO match!!!
Run Code Online (Sandbox Code Playgroud)
请注意,使用的模式略有不同\w.这是"单词字符"的字符类.
这似乎遵循您的规范,但请注意,这将匹配.....等等,可能或可能不是您想要的东西.如果您可以更具体地说明要匹配的模式,那么正则表达式会稍微复杂一些.
上面的正则表达式也匹配空字符串.如果您需要至少一个字符,则使用+(一个或多个)而不是*(零或多个)进行重复.
在任何情况下,您都可以进一步阐明您的规范(在询问正则表达式问题时总是有帮助的),但希望您也可以在给出上述信息的情况下自己学习如何编写模式.
nop*_*ole 11
您可以使用
^[\w\d_.-]+$
Run Code Online (Sandbox Code Playgroud)
这+是为了确保它至少有1个字符.需要^和$表示开头和结尾,否则如果字符串中间有匹配,@@@@xyz%%%%那么它仍然是匹配.
Fle*_*ipp 10
这是您要找的图案
/^[\w-_.]*$/
Run Code Online (Sandbox Code Playgroud)
这是什么意思:
^ 字符串的开始[...] 匹配里面的字符\w 任何单词字符 0-9 a-z A-Z-_.匹配-和_和.* 零个或多个模式或无限 $ 字符串结束如果要限制字符数:
/^[\w-_.]{0,5}$/
Run Code Online (Sandbox Code Playgroud)
{0,5}意思是0-5字符
要实际覆盖您的模式,即根据您的规则有效的文件名,我认为您需要更多.请注意,从系统角度来看,这与合法文件名不匹配.这将取决于系统,并且在接受的内容方面更加自由.这旨在匹配您可接受的模式.
^([a-zA-Z0-9]+[_-])*[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
Run Code Online (Sandbox Code Playgroud)
说明:
^匹配字符串的开头.这(加上结束匹配)强制字符串符合确切的表达式,而不仅仅包含与表达式匹配的子字符串.([a-zA-Z0-9]+[_-])*零次或多次出现一个或多个字母或数字后跟下划线或短划线.这会导致包含短划线或下划线的所有名称之间都包含字母或数字.[a-zA-Z0-9]+一个或多个字母或数字.这涵盖了所有不包含下划线或短划线的名称.\.字面时间(点).强制文件名具有扩展名,并且从模式的其余部分中排除,仅允许在名称和扩展名之间使用句点.如果你想要使用与短划线/下划线相同的技术来处理多个扩展,那么就在最后.[a-zA-Z0-9]+一个或多个字母或数字.扩展名必须至少有一个字符长,并且必须只包含字母和数字.这是典型的,但如果您想要允许下划线,那么也可以解决.如果更合适,您还可以提供长度范围{2,3}而不是一个或多个+匹配器.$匹配字符串的结尾.查看起始字符.小智 6
这样的事情应该工作
$code = "screen new file.css";
if (!preg_match("/^[-_a-zA-Z0-9.]+$/", $code))
{
echo "not valid";
}
Run Code Online (Sandbox Code Playgroud)
这将回应“无效”
| 归档时间: |
|
| 查看次数: |
265170 次 |
| 最近记录: |