我使用这个条件来检查值是否为字母数字值:
$value =~ /^[a-zA-Z0-9]+$/
如何修改这个正则表达式,以便考虑值中可能有一个句点.
,而不接受任何其他特殊字符?
$value =~ /^[a-zA-Z0-9.]+$/
不要忘记使用/i
选项和\d
字符类。
$value =~ /^[a-z\d.]+$/i
如果您不想允许除字符类中允许的字符之外的任何字符,则不应使用行尾锚点$
,因为它允许一个尾随换行符。而应该使用绝对字符串结尾锚点\z
:
$value =~ /^[a-z0-9.]+\z/i;
看看 Perl 正则表达式
\w Match "word" character (alphanumeric plus "_")
$value =~ /^[\w+.]\.*$/;
\w
是字母数字加上下划线。 - Eugene Yarmash
[.]
- Christoffer Hammarström\s
或\p{...}
)或ANSI类([:...:]
),否则所有字符都是字面的,所以主要需要转义的是'\\'
和方括号本身。尽管如此,有时您会发现由于Perl内部全局插值而需要转义$
。(我曾经尝试过使用类似qr/[#@$]/
的类,其中Perl想要将补丁级别作为子程序并清除类定义的结尾,这真的很有趣。) - Axeman\.
作为字符类中的.
接受,但并非所有 flavor 都会这样做。最好只转义必须转义的内容。 - JDB