This question already has answers here:
Regex - Should hyphens be escaped? [duplicate]

(3个答案)


4年前关闭。




我试图了解破折号-是否需要在正则表达式中使用反斜杠进行转义?

考虑一下:
var url     = '/user/1234-username';
var pattern = /\/(\d+)\-/;
var match   = pattern.exec(url);
var id      = match[1]; // 1234

如您在上面的正则表达式中看到的,我正在尝试从url中提取id的数量。我也使用反斜杠-在正则表达式中转义了\字符。但是当我删除该反斜杠时,仍然一切都很好..!换句话说,这两个都很好:
  • /\/(\d+)\-/
  • /\/(\d+)-/

  • 现在我想知道,哪个是正确的(标准)?我需要在正则表达式中转义破折号吗?

    最佳答案

    仅当可以将破折​​号字符解释为范围指示符时才需要转义该破折号字符(character class内部可能就是这种情况)。

    /-/        # matches "-"
    /[a-z]/    # matches any letter in the range between ASCII a and ASCII z
    /[a\-z]/   # matches "a", "-" or "z"
    /[a-]/     # matches "a" or "-"
    /[-z]/     # matches "-" or "z"
    

    关于javascript - 我需要在正则表达式中转义破折号吗? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35536590/

    10-10 17:59