字符串不包含*/的正则表达式
时间: 2024-09-22 15:07:20 浏览: 45
在PHP中,如果你想编写一个正则表达式来匹配一个字符串中不包含特定子串(如"/*"),可以使用否定前瞻断言`(?!)`。结合这个,你可以构建一个如下的正则表达式:
```php
$regex = '/^(?![*])((?!/)[^/]*)(?![*/])$/i'; // 匹配以非"/"字符开始,中间不包含"/*",最后以非"/"字符结束的字符串
```
这段正则表达式的含义是:
- `^` 表示字符串的开始。
- `(?![*])` 是一个否定前瞻断言,确保前面不会出现"*"字符。
- `((?!/)...)` 再次使用负向前瞻,确保不直接跟"/"。
- `[^/]*` 匹配除"/"之外的任意字符,零次或多次。
- `(?!*/)` 同样是负向前瞻,防止后面接"*"。
- `$` 表示字符串的结束。
- `/i` 是大小写不敏感的标志。
在Node.js中,如果你想要执行同样的搜索,可以使用`search()`方法,但需要注意的是,JavaScript的正则表达式引擎可能无法完美模拟PHP的前瞻断言。在这种情况下,你可以先删除可能的干扰部分,然后再进行搜索,例如:
```javascript
function filterString(str) {
return str.replace(/[*]/g, '').search(/\/(?!.*\/)/) === -1;
}
var str = "This is a string without /* comments */";
console.log(filterString(str)); // 输出:true 或者 false 根据实际结果
```
这里先移除了`/*`和`*/`,然后使用`search()`查找"/",如果找不到,则表示没有包含`/*`。
阅读全文