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

模式允许在2个字母数字之间使用可选连字符,并限制空格[duplicate]

毛镜
2023-03-14

sub:模式允许在2个字母数字之间使用可选连字符并限制空间。没有其他特殊字符

我需要一个正则表达式来匹配以下测试用例:-

“所有欠的”“allowe-d”“a-llo-wed-12”“allowed12”“allow-12ed”“allowed-12”“allo-wed-12”

“不允许”“不允许”“不允许”“不允许”“不允许--不允许”not@allowed"

尝试的模式:

^[^-]*-?[^-]*$
^\\w+(-\\w+)*$

正则表达式,用于输入一个只有数字和可选连字符的字符串。连字符可以位于字符2之后的任何位置

特殊字符的javascript正则表达式

Java正则表达式-字母数字,最多一个连字符、句点或下划线,七个字符长

PHP正则表达式,用于匹配用作子域的字母数字和连字符(不是空格)

还有更多

请张贴重复的问题链接。我们可以从那里提供的解决方案中学习,并改进我们的搜索

共有2个答案

养翔
2023-03-14

您可以使用正向向后和向前看来确保-介于两个字母数字字符之间。

<代码>^(?

在线演示

百里丁雨
2023-03-14

第二个正则表达式将匹配您的大小写,但也将匹配下划线。

也许你正在寻找一种模式,它匹配一个字母数字[a-z0-9]的一次或多次,然后重复匹配一个破折号,然后再匹配一个字母数字(?:-[a-z0-9])*

请注意,这只匹配小写字符。您可以使用不区分大小写标志来匹配大小写字符。

<代码>^[a-z0-9](?:-[a-z0-9])*$<代码>

js prettyprint-override">const strings = [
  "all-owed",
  "allowe-d",
  "a-llo-wed-12",
  "allowed12",
  "allow-12ed",
  "allowed-12",
  "allo-wed-12",
  "notallo-wed-12_",
  "not allowed",
  "not allowed ",
  " notallowed",
  " nota-llowed",
  "not--allowed",
  "not@allowed"
];
let pattern = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;

strings.forEach((s) => {
  console.log(s + " ==> " + pattern.test(s));
});
 类似资料:
  • 我正在尝试编写一个正则表达式,允许数字和字符之间使用连字符(-),但删除字符之间的连字符,并用PHP字符串中的空格替换它。我是正则表达式的初学者,不知道如何编写正则表达式,有人能帮我吗 这里我需要的是一个类似于PHP的字符串 在应用正则表达式后,我需要的输出必须是这样的 还有其他方法吗?请帮忙

  • 其中,我需要包括连字符和空格。 这意味着还必须可以输入值“”。

  • 我正在尝试构建一个正则表达式来验证用户名,该用户名将包含字母数字字符,并且应该允许<代码>(dot)(撇号)和-(破折号),我尝试了以下正则表达式,但它们不起作用 <代码>/^[a-zA-Z0-9\.-]$/<代码> 请帮帮忙

  • 问题内容: 我需要找到一个仅允许字母数字的reg ex。到目前为止,我尝试的每个人都只能在字符串是字母数字的情况下工作,这意味着同时包含字母和数字。我只想要一个允许任何一个但不需要两个都允许的东西。 问题答案: /^[a-z0-9]+$/i 更新(支持通用字符) 如果您需要此正则表达式支持通用字符,则可以找到unicode字符列表。 例如:

  • 我正在尝试编写一个正则表达式以允许数字和中间只有一个hypen(不能在开始或结束时)说模式:,是可以接受的,但模式:或或或或是不可接受的 我试过这样做,但这将允许-在开始时,也允许多个- 我不太擅长正则表达式,所以一点解释会很有帮助。 编辑:很抱歉再次打扰你,但我需要的数字只有2位(123-346)应被视为无效。