答案是
/^[a-zA-Z0-9_]+([-.][a-zA-Z0-9_]+)*$/
只允许包含 .-
和 -.
的字符串不匹配。 为什么允许它们匹配呢? 但如果您真的需要这些字符串匹配, 一个可能的解决方案就是
/^[a-zA-Z0-9_]+((.(-.)*-?|-(.-)*.?)[a-zA-Z0-9_]+)*$/
第一个regex 的单 < code>. 或 < code> 或 < code> 的单个 < code > - < /code > 或 < code > 替换为交替顺序 .
和 < code> 。 从 < code > 开始, < code > 或 < code >, < code > 或 < code > 。 < /code > 或 < code >, 由顺序替换为顺序 < code > 。 < code > 和 < code > 替换为顺序,允许偶数的交替字符数。 复杂性可能是超标, 但根据当前规范看来是需要的。 如果需要最多2个交替 < code>. 和 < code >- , 则regex 变成regex 。
/^[a-zA-Z0-9_]+((.-?|-.?)[a-zA-Z0-9_]+)*$/
测试 < a href=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\