HTMLParser.js 中 提取 attr 时如果attr属性过长将会报错
chaohui2 opened this issue · comments
问题地址 https://github.com/icindy/wxParse/blob/master/wxParse/htmlparser.js#L140
复现代码:
'areas="W3sidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4Ijo1LCJ5IjozLCJ3aWR0aCI6NzQxLCJoZWlnaHQiOjY5M30sImF0dHJpYnV0ZXMiOnsiaHJlZiI6InBhZ2U6Ly93eGE2MmIzYjdmYWQyODM5MTAvcGFnZXMvc2hvcC9nb29kcy1saXN0L2dvb2RzLWxpc3Q/aWQ9MTQxJm5hbWU9JUU2JTlDJThEJUU5JUE1JUIwJUU4JUExJUEzJUU3JTg5JUE5IiwiYWx0IjoiIiwidGl0bGUiOiIifX0seyJ0eXBlIjoicmVjdGFuZ2xlIiwiY29vcmRzIjp7IngiOjMsInkiOjExMTksIndpZHRoIjo3MzgsImhlaWdodCI6NTM2fSwiYXR0cmlidXRlcyI6eyJocmVmIjoicGFnZTovL3d4YTYyYjNiN2ZhZDI4MzkxMC9wYWdlcy9zaG9wL2dvb2RzLWxpc3QvZ29vZHMtbGlzdD9pZD0xNDcmbmFtZT0yMDE5JUU1JUI5JUI0MDglRTYlOUMlODglRTYlOTYlQjAlRTUlOTMlODElRTclQUMlQUMyOCVFNiU5QyU5RiIsImFsdCI6IiIsInRpdGxlIjoiIn19LHsidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4IjoxNywieSI6MTc1OSwid2lkdGgiOjcxMywiaGVpZ2h0Ijo1Nn0sImF0dHJpYnV0ZXMiOnsiaHJlZiI6InBhZ2U6Ly93eGE2MmIzYjdmYWQyODM5MTAvcGFnZXMvc2hvcC9nb29kcy1saXN0L2dvb2RzLWxpc3Q/aWQ9MTA5Jm5hbWU9JUU2JTk0JUI2JUU3JUJBJUIzJUU2JTk1JUI0JUU3JTkwJTg2IiwiYWx0IjoiIiwidGl0bGUiOiIifX0seyJ0eXBlIjoicmVjdGFuZ2xlIiwiY29vcmRzIjp7IngiOjIxLCJ5IjoxODM0LCJ3aWR0aCI6MzQ5LCJoZWlnaHQiOjk4fSwiYXR0cmlidXRlcyI6eyJocmVmIjoicGFnZTovL3d4YTYyYjNiN2ZhZDI4MzkxMC9wYWdlcy9zaG9wL2dvb2RzLWxpc3QvZ29vZHMtbGlzdD9pZD0xMTAmbmFtZT0lRTYlOUMlOEQlRTklQTUlQjAlRTYlOTUlQjQlRTclOTAlODYiLCJhbHQiOiIiLCJ0aXRsZSI6IiJ9fSx7InR5cGUiOiJyZWN0YW5nbGUiLCJjb29yZHMiOnsieCI6Mzg1LCJ5IjoxODM1LCJ3aWR0aCI6MzQzLCJoZWlnaHQiOjk1fSwiYXR0cmlidXRlcyI6eyJocmVmIjoicGFnZTovL3d4YTYyYjNiN2ZhZDI4MzkxMC9wYWdlcy9zaG9wL2dvb2RzLWxpc3QvZ29vZHMtbGlzdD9pZD0xMTEmbmFtZT0lRTUlOEMlOTYlRTUlQTYlODYlRTUlOTMlODElRTklQTYlOTYlRTklQTUlQjAlRTYlOTUlQjQlRTclOTAlODYiLCJhbHQiOiIiLCJ0aXRsZSI6IiJ9fSx7InR5cGUiOiJyZWN0YW5nbGUiLCJjb29yZHMiOnsieCI6MjEsInkiOjE5NDAsIndpZHRoIjozNTAsImhlaWdodCI6OTl9LCJhdHRyaWJ1dGVzIjp7ImhyZWYiOiJwYWdlOi8vd3hhNjJiM2I3ZmFkMjgzOTEwL3BhZ2VzL3Nob3AvZ29vZHMtbGlzdC9nb29kcy1saXN0P2lkPTExMyZuYW1lPSVFNiU5RCU4MiVFNyU4OSVBOSVFNiU5NSVCNCVFNyU5MCU4NiIsImFsdCI6IiIsInRpdGxlIjoiIn19LHsidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4IjoxOCwieSI6MjA3MSwid2lkdGgiOjcxMiwiaGVpZ2h0Ijo1Mn0sImF0dHJpYnV0ZXMiOnsiaHJlZiI6InBhZ2U6Ly93eGE2MmIzYjdmYWQyODM5MTAvcGFnZXMvc2hvcC9nb29kcy1saXN0L2dvb2RzLWxpc3Q/aWQ9MTE0Jm5hbWU9JUU2JUI4JTg1JUU2JUI0JTgxJUU2JUI0JTk3JUU2JThBJUE0IiwiYWx0IjoiIiwidGl0bGUiOiIifX0seyJ0eXBlIjoicmVjdGFuZ2xlIiwiY29vcmRzIjp7IngiOjIyLCJ5IjoyMTQzLCJ3aWR0aCI6MzQ2LCJoZWlnaHQiOjk2fSwiYXR0cmlidXRlcyI6eyJocmVmIjoicGFnZTovL3d4YTYyYjNiN2ZhZDI4MzkxMC9wYWdlcy9zaG9wL2dvb2RzLWxpc3QvZ29vZHMtbGlzdD9pZD0xMTUmbmFtZT0lRTUlQUUlQjYlRTUlQjElODUlRTYlQjglODUlRTYlQjQlODEiLCJhbHQiOiIiLCJ0aXRsZSI6IiJ9fSx7InR5cGUiOiJyZWN0YW5nbGUiLCJjb29yZHMiOnsieCI6Mzg1LCJ5IjoyMTQzLCJ3aWR0aCI6MzQyLCJoZWlnaHQiOjEwM30sImF0dHJpYnV0ZXMiOnsiaHJlZiI6InBhZ2U6Ly93eGE2MmIzYjdmYWQyODM5MTAvcGFnZXMvc2hvcC9nb29kcy1saXN0L2dvb2RzLWxpc3Q/aWQ9MTE2Jm5hbWU9JUU0JUI4JUFBJUU0JUJBJUJBJUU2JUI0JTk3JUU2JThBJUE0IiwiYWx0IjoiIiwidGl0bGUiOiIifX0seyJ0eXBlIjoicmVjdGFuZ2xlIiwiY29vcmRzIjp7IngiOjIxLCJ5IjoyMjQ4LCJ3aWR0aCI6MzQ5LCJoZWlnaHQiOjk1fSwiYXR0cmlidXRlcyI6eyJocmVmIjoicGFnZTovL3d4YTYyYjNiN2ZhZDI4MzkxMC9wYWdlcy9zaG9wL2dvb2RzLWxpc3QvZ29vZHMtbGlzdD9pZD0xMTcmbmFtZT0lRTglQTElQTMlRTclODklQTklRTYlQjglODUlRTYlQjQlODEiLCJhbHQiOiIiLCJ0aXRsZSI6IiJ9fSx7InR5cGUiOiJyZWN0YW5nbGUiLCJjb29yZHMiOnsieCI6MTQsInkiOjIzODYsIndpZHRoIjo3MjIsImhlaWdodCI6NTd9LCJhdHRyaWJ1dGVzIjp7ImhyZWYiOiJwYWdlOi8vd3hhNjJiM2I3ZmFkMjgzOTEwL3BhZ2VzL3Nob3AvZ29vZHMtbGlzdC9nb29kcy1saXN0P2lkPTExOCZuYW1lPSVFNSU4RSVBOCVFNiU4OCVCRiVFOSVBNCU5MCVFNSU4NSVCNyIsImFsdCI6IiIsInRpdGxlIjoiIn19LHsidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4IjoyMiwieSI6MjQ1NCwid2lkdGgiOjM0NCwiaGVpZ2h0Ijo5Nn0sImF0dHJpYnV0ZXMiOnsiaHJlZiI6InBhZ2U6Ly93eGE2MmIzYjdmYWQyODM5MTAvcGFnZXMvc2hvcC9nb29kcy1saXN0L2dvb2RzLWxpc3Q/aWQ9MTE5Jm5hbWU9JUU1JThFJUE4JUU2JTg4JUJGJUU2JTk1JUI0JUU3JTkwJTg2IiwiYWx0IjoiIiwidGl0bGUiOiIifX0seyJ0eXBlIjoicmVjdGFuZ2xlIiwiY29vcmRzIjp7IngiOjM4NSwieSI6MjQ1NCwid2lkdGgiOjM0NSwiaGVpZ2h0Ijo5MH0sImF0dHJpYnV0ZXMiOnsiaHJlZiI6InBhZ2U6Ly93eGE2MmIzYjdmYWQyODM5MTAvcGFnZXMvc2hvcC9nb29kcy1saXN0L2dvb2RzLWxpc3Q/aWQ9MTIyJm5hbWU9JUU5JUE0JTkwJUU1JTg1JUI3JUU2JTlEJUFGJUU1JUEzJUI2IiwiYWx0IjoiIiwidGl0bGUiOiIifX0seyJ0eXBlIjoicmVjdGFuZ2xlIiwiY29vcmRzIjp7IngiOjI0LCJ5IjoyNTYyLCJ3aWR0aCI6MzQ3LCJoZWlnaHQiOjk2fSwiYXR0cmlidXRlcyI6eyJocmVmIjoicGFnZTovL3d4YTYyYjNiN2ZhZDI4MzkxMC9wYWdlcy9zaG9wL2dvb2RzLWxpc3QvZ29vZHMtbGlzdD9pZD0xMjEmbmFtZT0lRTUlOEUlQTglRTYlODglQkYlRTUlQjclQTUlRTUlODUlQjciLCJhbHQiOiIiLCJ0aXRsZSI6IiJ9fSx7InR5cGUiOiJyZWN0YW5nbGUiLCJjb29yZHMiOnsieCI6Mzg2LCJ5IjoyNTYyLCJ3aWR0aCI6MzQ3LCJoZWlnaHQiOjkzfSwiYXR0cmlidXRlcyI6eyJocmVmIjoicGFnZTovL3d4YTYyYjNiN2ZhZDI4MzkxMC9wYWdlcy9zaG9wL2dvb2RzLWxpc3QvZ29vZHMtbGlzdD9pZD0xMjAmbmFtZT0lRTklQTMlOUYlRTclODklQTklRTUlODIlQTglRTglOTclOEYiLCJhbHQiOiIiLCJ0aXRsZSI6IiJ9fSx7InR5cGUiOiJyZWN0YW5nbGUiLCJjb29yZHMiOnsieCI6MjMsInkiOjI2NjcsIndpZHRoIjozNDYsImhlaWdodCI6OTJ9LCJhdHRyaWJ1dGVzIjp7ImhyZWYiOiJwYWdlOi8vd3hhNjJiM2I3ZmFkMjgzOTEwL3BhZ2VzL3Nob3AvZ29vZHMtbGlzdC9nb29kcy1saXN0P2lkPTE0MCZuYW1lPSVFNyU4MyVCOSVFOSVBNSVBQSVFNyU5NCVBOCVFNSU4NSVCNyIsImFsdCI6IiIsInRpdGxlIjoiIn19LHsidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4IjoyMiwieSI6Mjg3NSwid2lkdGgiOjM0MCwiaGVpZ2h0Ijo5MH0sImF0dHJpYnV0ZXMiOnsiaHJlZiI6InBhZ2U6Ly93eGE2MmIzYjdmYWQyODM5MTAvcGFnZXMvc2hvcC9nb29kcy1saXN0L2dvb2RzLWxpc3Q/aWQ9MTQyJm5hbWU9JUU2JTlDJThEJUU5JUE1JUIwJUU3JUE5JUJGJUU2JTkwJUFELSVFNyU5NCVCNyIsImFsdCI6IiIsInRpdGxlIjoiIn19LHsidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4IjozODMsInkiOjI4NzUsIndpZHRoIjozNDcsImhlaWdodCI6OTZ9LCJhdHRyaWJ1dGVzIjp7ImhyZWYiOiJwYWdlOi8vd3hhNjJiM2I3ZmFkMjgzOTEwL3BhZ2VzL3Nob3AvZ29vZHMtbGlzdC9nb29kcy1saXN0P2lkPTE0MyZuYW1lPSVFNiU5QyU4RCVFOSVBNSVCMCVFNyVBOSVCRiVFNiU5MCVBRC0lRTUlQTUlQjMiLCJhbHQiOiIiLCJ0aXRsZSI6IiJ9fSx7InR5cGUiOiJyZWN0YW5nbGUiLCJjb29yZHMiOnsieCI6MjAsInkiOjI5NzksIndpZHRoIjozNDYsImhlaWdodCI6OTR9LCJhdHRyaWJ1dGVzIjp7ImhyZWYiOiJwYWdlOi8vd3hhNjJiM2I3ZmFkMjgzOTEwL3BhZ2VzL3Nob3AvZ29vZHMtbGlzdC9nb29kcy1saXN0P2lkPTE0NCZuYW1lPSVFNSVCMSU4NSVFNSVBRSVCNiVFNyVBOSVCRiVFNiU5MCVBRCIsImFsdCI6IiIsInRpdGxlIjoiIn19LHsidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4IjozODIsInkiOjI5NzksIndpZHRoIjozNDYsImhlaWdodCI6OTR9LCJhdHRyaWJ1dGVzIjp7ImhyZWYiOiJwYWdlOi8vd3hhNjJiM2I3ZmFkMjgzOTEwL3BhZ2VzL3Nob3AvZ29vZHMtbGlzdC9nb29kcy1saXN0P2lkPTE0NSZuYW1lPSVFOCVCNCVCNCVFOCVCQSVBQiVFOCVBMSVBMyVFNyU4OSVBOSIsImFsdCI6IiIsInRpdGxlIjoiIn19LHsidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4IjoyMSwieSI6MzExNiwid2lkdGgiOjcwNiwiaGVpZ2h0Ijo1NH0sImF0dHJpYnV0ZXMiOnsiaHJlZiI6InBhZ2U6Ly93eGE2MmIzYjdmYWQyODM5MTAvcGFnZXMvc2hvcC9nb29kcy1saXN0L2dvb2RzLWxpc3Q/aWQ9MTIzJm5hbWU9JUU1JTg1JUI2JUU0JUJCJTk2JUU3JTk0JUE4JUU1JTkzJTgxIiwiYWx0IjoiIiwidGl0bGUiOiIifX0seyJ0eXBlIjoicmVjdGFuZ2xlIiwiY29vcmRzIjp7IngiOjIyLCJ5IjozMTgwLCJ3aWR0aCI6MzQwLCJoZWlnaHQiOjk2fSwiYXR0cmlidXRlcyI6eyJocmVmIjoicGFnZTovL3d4YTYyYjNiN2ZhZDI4MzkxMC9wYWdlcy9zaG9wL2dvb2RzLWxpc3QvZ29vZHMtbGlzdD9pZD0xMjUmbmFtZT0lRTUlQjglODMlRTglODklQkElRTUlQkElOEElRTUlOTMlODEiLCJhbHQiOiIiLCJ0aXRsZSI6IiJ9fSx7InR5cGUiOiJyZWN0YW5nbGUiLCJjb29yZHMiOnsieCI6Mzg0LCJ5IjozMTgzLCJ3aWR0aCI6MzQ2LCJoZWlnaHQiOjk4fSwiYXR0cmlidXRlcyI6eyJocmVmIjoicGFnZTovL3d4YTYyYjNiN2ZhZDI4MzkxMC9wYWdlcy9zaG9wL2dvb2RzLWxpc3QvZ29vZHMtbGlzdD9pZD0xMzgmbmFtZT0lRTUlQUUlQjYlRTUlQjElODUlRTUlODUlQjYlRTQlQkIlOTYiLCJhbHQiOiIiLCJ0aXRsZSI6IiJ9fSx7InR5cGUiOiJyZWN0YW5nbGUiLCJjb29yZHMiOnsieCI6MjAsInkiOjMyOTAsIndpZHRoIjozNDcsImhlaWdodCI6OTN9LCJhdHRyaWJ1dGVzIjp7ImhyZWYiOiJwYWdlOi8vd3hhNjJiM2I3ZmFkMjgzOTEwL3BhZ2VzL3Nob3AvZ29vZHMtbGlzdC9nb29kcy1saXN0P2lkPTEyNCZuYW1lPSVFNiU4OCVCNyVFNSVBNCU5NiVFNSVCNyVBRSVFNiU5NyU4NSIsImFsdCI6IiIsInRpdGxlIjoiIn19LHsidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4IjozODIsInkiOjMyOTIsIndpZHRoIjozNDYsImhlaWdodCI6OTJ9LCJhdHRyaWJ1dGVzIjp7ImhyZWYiOiJwYWdlOi8vd3hhNjJiM2I3ZmFkMjgzOTEwL3BhZ2VzL3Nob3AvZ29vZHMtbGlzdC9nb29kcy1saXN0P2lkPTE0NiZuYW1lPSVFNSU4NCVCRiVFNyVBQiVBNSVFNyU5NCU5RiVFNiVCNCVCQiVFNyU5NCVBOCVFNSU5MyU4MSIsImFsdCI6IiIsInRpdGxlIjoiIn19LHsidHlwZSI6InJlY3RhbmdsZSIsImNvb3JkcyI6eyJ4IjoyMiwieSI6Mjc5OSwid2lkdGgiOjcwOCwiaGVpZ2h0Ijo2MH0sImF0dHJpYnV0ZXMiOnsiaHJlZiI6InBhZ2U6Ly93eGE2MmIzYjdmYWQyODM5MTAvcGFnZXMvc2hvcC9nb29kcy1saXN0L2dvb2RzLWxpc3Q/aWQ9MTQxJm5hbWU9JUU2JTlDJThEJUU5JUE1JUIwJUU4JUExJUEzJUU3JTg5JUE5IiwiYWx0IjoiIiwidGl0bGUiOiIifX1d" src="https://prdfwbdw.lcshop.com.cn/prdfwbdw/CKEditor/201909/763b89aa063144d8bd7e813c0675112a.jpg"'.replace(/([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g, function (tag, tagName, rest, unary){
console.log(tag, tagName, rest, unary)
})
/([a-zA-Z_:][-a-zA-Z0-9_:.])(?:\s?=\s*?(?:(?:"((?:\.|[^"])?)")|(?:'((?:\.|[^'])?)')|([^>\s]+)))?/gi
改为这个,可以暂时解决问题