我有一个这样的字符串,我只想知道它是否包含' N2'在其中,但不是EN2',所以应该忽略它:
EN2T65G872N2ULKJJDLO05
如果有帮助的话,它总是从EN2开始,但是N数可能与N3不同,例如。我只是不希望它错误地将单位识别为N2,除非它实际上包含
我将如何做到这一点?
答案 0 :(得分:2)
这样的事情:
var rx = new Regex("(?:^EN[0-9].*?)(N[0-9])");
var match = rx.Match(str);
if (match.Success)
{
var nx = match.Groups[1].Value;
}
^
表示字符串开头,(?: )
是非捕获组,因为我们对它不感兴趣,.*?
是任意次数的任何字符但不贪心。
答案 1 :(得分:0)
使用分组来匹配第二种情况:onCheck = (checkedKeys, event) => {
how can get node checked??? it always returns last node
const node = this.myRef.current;
console.log(node)
}
componentDidMount() {
// I have to do something here???
}
render() {
const loop = (data) => {
return data.map((item) => {
if (item.children && item.children.length) {
return <TreeNode ref={this.myRef} title={item.name} key={item.key} checked={item.checked} >{loop(item.children)}</TreeNode>;
}
return (
<TreeNode ref={this.myRef} title={item.name} key={item.key} isLeaf={item.isLeaf} checked={item.checked} />
);
});
};
return (
<div className="draggable-container">
<Tree
// Expand
expandedKeys={this.state.expandedKeys}
onExpand={this.onExpand} autoExpandParent={this.state.autoExpandParent}
// Draggable
draggable
onDragStart={this.onDragStart}
onDragEnter={this.onDragEnter}
onDrop={this.onDrop}
// Select && Check
onSelect={this.onSelect}
checkable onCheck={this.onCheck} checkedKeys={this.state.checkedKeys} >
{ loop(this.state.treeData) }
</Tree>
</div>
);
}
https://regex101.com/r/005u2q/1
对于 N号可能不同使用:N2.*?(N2)
答案 2 :(得分:-1)
您可以在正则表达式中使用negative lookbehind:
(?<!E)N[0-9]
此正则表达式将匹配包含“N”字符的任何序列:前面没有“E”字符;随后是任何数字。 以下是一个示例:RegExr。