我使用<a>
显示以下多行字符串,如下所示,其中每一行用新行表示:
<pre>
我想解析SchoolDistrictCode:291238-9
location_version:3.4
build:e9kem
,每次多线的内容都会有所不同。但每个人都会build:e9kem
。
我尝试了:
build:
尝试显示它:
const regexp = /^build:(.*)$/m;
//stringPar would vary every time
const stringPar = `SchoolDistrictCode:291238-9
location_version:3.4
build:e9kem`;
它正确解析,但是对于某些多行字符串,当我尝试显示{stringPar.match(regexp)[1])};
这样的字符串时,它会返回Uncaught TypeError: Cannot read property '1' of null
,但是当控制台像控制台一样记录时,控制台会正确记录字符串。日志(stringPar.match(正则表达式)[1])。
可能是什么问题?
提前感谢您,并将提出/接受答复
编辑(在ReactJS中)
它基本上是一个被反复渲染的组件,并将道具传递给它。
stringPar.match(regexp)[1]
答案 0 :(得分:0)
可能是什么问题?
正则表达式在所有情况下都不匹配,可能是因为:
每次多线的内容都会有所不同
做这样的事情,这样你就可以看到字符串在匹配时的样子:
export default class tableRow extends Component {
...
render() {
// ensure we actually have a string to run match on so don't get an error
const matchStr = this.props.stringPar || '';
const m = matchStr.match(regexp); // run match
const matchFound = m && m.length > 0; // boolean, was match found
const build = matchFound ? m[1] : 'build fallback'; // regex match or fallback if no match was found
if (!matchFound) {
console.log("Could not find 'build:' in:", matchStr, matchStr.length === 0 ? 'BLANK!' : 'NOT BLANK');
}
return (
<tr>
<td>
<button>{build}</button>
<td>
<tr>
)
}
}
并相应地调整你的正则表达式。