regex - 需要一个字母数字的正则表达式,其中包含 1 个连字符和单词之间的空格

标签 regex

你能给我一个正则表达式吗

  • 只允许字母数字
  • 在整个字符串中绝对只有一个连字符
  • 字符串前后不允许有连字符或空格
  • 不允许有连续的空格或连字符。
  • hypen和一个空格可以相邻

有效-“123-Abc test1”,“test-me”,“abc slkh-hsds”
无效-“abc”、“-hsdj sdsd hjds-”

感谢您在这方面帮助我。非常感谢您的帮助

最佳答案

/^([a-zA-Z0-9] ?)+-( ?[a-zA-Z0-9])+$/

参见 demo在这里。

编辑:

如果连字符的两边不能有空格,则需要多一点:

/^([a-zA-Z0-9] ?)+-(((?<! -) )?[a-zA-Z0-9])+$/
                    ^^^^^^^^ ^

或者,如果不支持负向后回顾断言(例如在 JavaScript 中),则等效的正则表达式:

/^([a-zA-Z0-9]( (?!- ))?)+-( ?[a-zA-Z0-9])+$/
              ^ ^^^^^^^ ^

关于regex - 需要一个字母数字的正则表达式,其中包含 1 个连字符和单词之间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783463/

相关文章:

Javascript动态正则表达式值

php - 使用 PHP 和 RegEX 返回多个匹配项,但仅直到模式第一次出现为止

javascript - 正则表达式用空格替换字符

regex - 正则表达式的字符类(方括号)中的点是否必须转义?

Python 2.7.16 - 正则表达式lookbehind不适用于Findall

python - 正则表达式排除由引号引起来的匹配以及以 % 开头的行

javascript - 正则表达式可匹配括号之间的任何内容(引号除外)

python - 如何通过NLTK中的标签将一个段落拆分成句子

Java 正则表达式 : unexpected char: '('

java - 根据正则表达式分割字符串