1

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

验证字符串的条件如下:

  • 字符串不应包含 \(反斜杠)、/(正
    斜杠)、:(冒号)、*(星号)、? (问号), " (双
    引号), < (左尖括号), > (右尖括号), | (竖线)
  • 不要包含连字符 (-) 或句点 (.) 作为字符串的第一个或最后
    一个字符。

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

4

2 回答 2

1

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

于 2012-10-01T05:38:57.927 回答
1

尝试:

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

编辑:这个正则表达式应该工作:

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

但是正如您所看到的,它变得非常难以阅读和丑陋,我认为您最好使用如下函数逐步完成它:

function isValidString(str) {
  return /^[^.\-]/.test(str) &&
    /[^.\-]$/.test(str) &&
    /[^\\\/:*?"<>|]+/.test(str);
}
于 2012-10-01T05:43:31.373 回答