当前位置: 首页 > 知识库问答 >
问题:

如何使用正则表达式匹配仅包含字母数字字符、破折号和下划线的字符串

柴意智
2023-03-14

所有:

我想做的是使用正则表达式匹配一个只允许[a-Za-z0-9_-]的字符串,格式应该是:

仅从[A-Za-z0-9]开始,然后是[A-Za-z0-9_-]。中间可能有[_-],但如果有,则只允许一次(两个_-,但每个都只有一次机会),并以[A-Za-z0-9]结束。

我只知道如何匹配字母数字字符、破折号和下划线,但不知道如何限制它们的出现时间。

谢谢

共有1个答案

陆洛城
2023-03-14

您可以使用负前瞻:

^(?!.*(-[^-]*-|_[^_]*_))[A-Za-z0-9][\w-]*[A-Za-z0-9]$
  • ^-行开始
  • (?!.*(-[^-]*-| _[^_]*_))-负前瞻,这意味着如果前面有2个下划线或2个连字符,则匹配失败
  • [A-Za-z0-9]-匹配1个字母数字字符
  • [\w-]*-匹配0个或多个[A-Za-z0-9_-]字符
  • $-匹配行结束
 类似资料:
  • 问题内容: 我知道如何遍历字符串中的所有字符,但是我正在寻找一种更优雅的方法。 问题答案: 正则表达式只需很少的代码即可解决问题:

  • 我试图匹配包含字母数字、连字符、下划线和空格的字符串。 连字符、下划线、空格和数字是可选的,但第一个和最后一个字符必须是字母。 例如,这些都应该匹配: 我试过这个: 但它在开始/结束时与空格、下划线或连字符匹配,但它应该只允许在两者之间。

  • 我希望有一个正则表达式来检查字符串是否包含大小写字母、数字、下划线以及字符限制。这些是字符串中唯一允许的类型。

  • 我正在寻找限制行编辑的方法,以仅接受字母数字字符、破折号和下划线(整行可能只有一个破折号和一个下划线),没有空格。我正在查看RegExp,但后来我留下了这个选项,因为我发现一些博客文章解释说RegExp真的很慢。现在我不知道限制行编辑的最佳方法是什么,所以输出将是我想要的。 你推荐我什么?

  • 我需要允许字段使用字母数字和某些其他字符。我正在使用这个正则表达式: 允许的特殊字符是 “_”。我做错了什么?

  • 我正在编写文件上传页面脚本(Javascript)。用户从他们的机器中选择一个文件。 我需要从包含文件名的字符串中删除任何不是: 一封信 我一直在尝试使用Javascript替换函数来删除不必要的字符。我可以使用以下方法删除所有非字母数字部分: 这会留下字母、数字和下划线,但我还需要允许破折号和句点。我不确定选择破折号和句点的正确正则表达式是什么。