正则表达式,用于通过javascript验证特定字符

时间:2014-07-31 04:15:37

标签: javascript asp.net c#-4.0

我想验证一个不允许以下字符的字符串。

<,>,:,","/,\,|,?,*,#

我想通过JavaScript验证这一点。 我正在尝试使用以下代码。

var reg = /[^a-zA-Z0-9 \-_]+/;
reg.test(filename[0])

但是这无法验证符号#

请帮忙。

3 个答案:

答案 0 :(得分:0)

你遇到的问题是你在模式中间包含了连字符而没有转义它。这告诉引擎你期望一个范围 - 在这种情况下通过下划线的空间。在我看来,将连字符设置为模式中的第一个或最后一个字符更容易,此时您不必将其转义。 (如果你使用的是否定的字符类,它将是第二个字符。)

e.g。

var reg = /[^a-zA-Z0-9 \-_]+/;

- 或 -

var reg = /[^a-zA-Z0-9 _-]+/;

- 或 -

var reg = /[^-a-zA-Z0-9 _]+/;

答案 1 :(得分:0)

您是否只想允许英文字母a-z(和A-Z),数字,空格,&#39; _&#39;和&#39; - &#39;?如果是这样,那就不同于不允许你指定的字符,因为&#39;☃&#39;没有您提供的字符,但在您的用例中可能不是有效的字符串。

如果您只想要英文字母,数字,空格,&#39; _&#39;和&#39; - &#39;,您可以使用以下RegExp和条件:

var reg = /^[a-zA-Z0-9 \-_]+$/; 
if (reg.test(filename[0])) {
  // String is ok
}

这表示开头(^)和结束($)之间的字符串中的所有内容都必须是一个或多个允许的字符。

如果您想禁止在问题中提供的字符,可以使用:

var reg = /[\<\>\:\,\/\\\|\?\*\#]/; 
if (!reg.test(filename[0])) {
  // String is ok
} 

这表示要搜索您列出的任何字符(它们都在它们之前使用\进行转义),如果您发现任何字符,则该字符串无效。因此,只有当测试失败时,字符串才是有效的字符串 - 这就是为什么在测试之前有!的原因。

答案 2 :(得分:0)

string  sourceString ="something" ;
var outString = sourceString.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '');