需要正则表达式来验证字符串

时间:2012-10-01 05:33:18

标签: javascript regex

我想制作一个正则表达式来验证特定类型的字符串。

验证字符串的条件如下:

  • 字符串不应包含\(反斜杠),/(前向
    等字符) 斜线),:(冒号),*(星号),? (问号),“(双号) 引用),< (左尖括号),> (直角括号),| (管道)
  • 不包含连字符( - )或句点(。)作为第一个或最后一个 字符串的字符。

我尝试了很多但没有取得任何成功,因为我需要单个正则表达式来满足所有条件。

2 个答案:

答案 0 :(得分:1)

正则表达式可能包含所谓的“类”,预定义或自定义字符集。尝试使用预定义的[:alpha:]或自定义,如[0-9 *。><]等。使用“^”字符查找类否定,并通过在“\”前面添加特殊字符来转义。

答案 1 :(得分:1)

尝试:

/^[^.\-][^\/:*?"<>|]+[^.\-]$/

编辑:此正则表达式应该有效:

/^(?![.\-])(?:[^\\\/:*?"<>|])*[^.\-\\\/:*?"<>|]$/

但是你可以看到它变得非常难以理解和丑陋我觉得你最好用这样的功能逐步完成它:

function isValidString(str) {
  return /^[^.\-]/.test(str) &&
    /[^.\-]$/.test(str) &&
    /[^\\\/:*?"<>|]+/.test(str);
}