【发布时间】:2019-05-15 00:15:40
【问题描述】:
我需要一个正则表达式,它只允许输入中的 A-Z、a-z、0-9、_ 字符和点 (.)。
我试过了:
[A-Za-z0-9_.]
但是,它没有用。我该如何解决?
【问题讨论】:
-
可以在这方面提供更多信息,它有点模糊。一些示例输入会很好,并且您正在使用它的上下文,语言呢?
标签: regex
我需要一个正则表达式,它只允许输入中的 A-Z、a-z、0-9、_ 字符和点 (.)。
我试过了:
[A-Za-z0-9_.]
但是,它没有用。我该如何解决?
【问题讨论】:
标签: regex
^[A-Za-z0-9_.]+$
从字符串的开头到结尾,匹配这些字符中的一个或多个。
编辑:
注意^ 和$ 匹配行 的开头和结尾。启用多行时,这可能意味着一行匹配,但不是完整的字符串。
使用\A 作为字符串的开头,\z 作为结尾。
例如:http://msdn.microsoft.com/en-us/library/h5181w5w(v=vs.110).aspx
【讨论】:
^[\w.]+$,觉得不是到处都能用。
根据您提供的信息,我假设您想检查是否有人没有输入除您列出的字母之外的任何字母。为此,您需要搜索列出的字符以外的任何字符:
[^A-Za-z0-9_.]
并在您的代码中使用它,例如:
if ( /[^A-Za-z0-9_.]/.match( your_input_string ) ) {
alert( "you have entered invalid data" );
}
怎么样?
【讨论】:
您可以简单地使用 ^[\w.]+ 来匹配 A-Z、a-z、0-9 和 _
【讨论】:
也许,您需要更准确地说明什么不起作用以及您所处的环境。
关于点在字符类中特殊的说法,并非在每个编程环境中都是如此。例如下面的 perl 脚本
use warnings;
use strict;
my $str = '!!!.###';
$str =~ s/[A-Za-z_.]/X/g;
print "$str\n";
生产
!!!X###
【讨论】:
正则表达式:/^[a-zA-Z0-9_.]$/i
这行得通
【讨论】: