寻求正则表达式:判断字符串中字母是否被+左右包围的JS实现
判断字符串中是否存在被
+直接包围的字母 看起来你需要检测字符串中是否存在至少一个字母被一对+直接相邻包围的情况(也就是形如+[a-zA-Z]+的子串),但你当前的函数只能匹配**整个字符串恰好是+字母+**的场景,完全不符合实际需求。我们来修正它:
修正后的核心函数
function check_str_pos(str) { // 检查字符串任意位置是否存在`+字母+`的子串 return /\+[a-zA-Z]\+/.test(str); }
正则规则解释
\+:匹配单个+字符(因为+在正则中是特殊元字符,需要用反斜杠转义)[a-zA-Z]:匹配任意大小写英文字母- 整个正则的作用是:只要字符串里出现
+紧跟字母再紧跟+的片段,就判定为符合条件。
用你的示例验证结果
我们代入你给出的测试用例:
++t+==+z++==→ 包含+t+子串 → 返回true✔️++t++z==→ 包含+t+子串 → 返回true(如果你的预期是false,可能是示例表述有误,比如实际是++t+z==,该字符串无符合子串,会返回false)++z+p++→ 包含+p+子串 → 返回true✔️t++z+→ 没有符合的+字母+片段 → 返回false✔️
进阶:排除连续+的严格匹配
如果你希望字母被独立的一对+包围(也就是+字母+的前后不能是+),可以用带边界检查的正则:
function check_str_pos(str) { // 匹配`+字母+`,且该子串前后不能是`+` return /(^|[^\+])\+[a-zA-Z]\+([^\+]|$)/.test(str); }
其中(^|[^\+])表示子串要么在字符串开头,要么前面是一个非+的字符;([^\+]|$)表示子串要么在字符串结尾,要么后面是一个非+的字符。
内容的提问来源于stack exchange,提问作者Kevin kamau
相关产品推荐
相关产品推荐

