如何在JavaScript中使用Regex验证符合指定格式的字符串?
JavaScript Regex to Validate Semicolon-Separated Options String
没问题,我帮你搞定这个正则表达式!先把你的验证需求拆解清楚,这样你也能明白每个正则部分的作用:
- 字符串必须包含至少一个
;(也就是至少有2个选项) - 字符串不能以
;开头、结尾,也不能出现连续的;; - 每个选项长度至少3个字符
- 选项首尾不能有空格,但内部可以包含空格
- 选项里绝对不能包含
;
最终正则表达式
const validationRegex = /^(?!;)(?!.*;;)(?!.*;$)(?:\S[^;]{1,}\S)(?:;\S[^;]{1,}\S)+$/;
正则各部分解释
让我拆解开每个部分,帮你理解:
^:匹配字符串的起始位置,确保我们从开头就开始验证(?!;):负向前瞻,确保字符串不是以;开头(?!.*;;):另一个负向前瞻,检查整个字符串里有没有连续的两个;(?!.*;$):负向前瞻,确保字符串不是以;结尾(?:\S[^;]{1,}\S):匹配第一个有效选项:\S:强制选项开头必须是非空格字符[^;]{1,}:匹配至少1个非;的字符(可以包含空格)\S:强制选项结尾必须是非空格字符- 整个组合确保选项长度至少3,首尾无空格,且不含
;
(?:;\S[^;]{1,}\S)+:匹配一个或多个后续选项,每个选项前必须有一个;,然后是符合要求的选项内容$:匹配字符串的结束位置,确保整个字符串都符合规则
使用示例
把它封装成一个验证函数,测试你的所有示例:
const isValidOptions = (str) => { const regex = /^(?!;)(?!.*;;)(?!.*;$)(?:\S[^;]{1,}\S)(?:;\S[^;]{1,}\S)+$/; return regex.test(str); }; // 测试你的示例 console.log(isValidOptions("aaa;BBC;ccc")); // true ✅ valid console.log(isValidOptions(";aaa;bbb;ccc")); // false ❌ invalid (starts with ;) console.log(isValidOptions("aaa;bbb;ccc;")); // false ❌ invalid (ends with ;) console.log(isValidOptions("aaa;bbb;ccc;ddd")); // true ✅ valid console.log(isValidOptions("aaa;b;ccc")); // false ❌ invalid (option length <3) console.log(isValidOptions("aaa;bbb;;ccc")); // false ❌ invalid (consecutive ;;) console.log(isValidOptions("aa a;bbb;ccc")); // true ✅ valid (internal space) console.log(isValidOptions("aaa ;bbb;ccc")); // false ❌ invalid (trailing space in option) console.log(isValidOptions(" aaa;bbb;ccc")); // false ❌ invalid (leading space in option) console.log(isValidOptions("aaa;bb b;ccc;ddd")); // true ✅ valid (internal space) console.log(isValidOptions("aaa;bbb ;ccc;ddd")); // false ❌ invalid (trailing space in option) console.log(isValidOptions("aaa;bbb")); // true ✅ valid (two valid options)
这个函数会准确返回每个示例的验证结果,完全符合你的要求。
内容的提问来源于stack exchange,提问作者flyingfox
相关产品推荐
相关产品推荐

